QTablewidget双击单元格和关闭编辑框分别发出信号

最新开发中,在单元格双击进入编辑态时发出信号,在编辑完成时,再次发出信号。

双击时发出信号

继承QTablewidget,重写mouseDoubleClickEvent

头文件

#ifndef MYTABLEWIDGET_H
#define MYTABLEWIDGET_H

#include 
#include 

class mytableWidget : public QTableWidget
{
    Q_OBJECT
public:
    explicit mytableWidget(QWidget *parent = 0);
    
signals:
    void enterEditState(bool);
public slots:
    void mouseDoubleClickEvent(QMouseEvent *event);
};

#endif // MYTABLEWIDGET_H

cpp

#include "mytablewidget.h"
#include 

mytableWidget::mytableWidget(QWidget *parent) :
    QTableWidget(parent)
{
}


void mytableWidget::mouseDoubleClickEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        QPoint p =event->pos();//双击位置
        QModelIndex index = this->indexAt(p);//根据位置查找单元格
        if(index.isValid())
        {
            if(index.column() ==2)//第三列
            {
                QTableWidgetItem* item = this->itemAt(p);
                if(item)
                {
                    emit enterEditState(true);//发出信号
                }
            }
        }
    }
    QTableWidget::mouseDoubleClickEvent(event);
}

使用

 

connect(tableWidget->itemDelegate(), SIGNAL(closeEditor(QWidget*)), this, SLOT(itemdataChanged(QWidget*)));//编辑完成,发出信号
    

connect(tableWidget, SIGNAL(enterEditState(bool)), this, SLOT(on_edit(bool)));//开始编辑,发发出信号

QComboBox 单击操作---重写showPopup()、hidePopup()函数

你可能感兴趣的:(qt,笔记)