当前位置: 主页 > 热点 > > 详情
Qt QTableWidget表头添加QComBox

来源:QT教程  2023-05-27 11:36:48


【资料图】

代码之路

代码很简单,重写QHeaderView类,然后设置到对应的Table中即可。

重写QHeaderView类

class CheckBoxHeaderView : public QHeaderView{Q_OBJECTpublic:CheckBoxHeaderView(int checkColumnIndex,Qt::Orientation orientation,QWidget * parent = 0) :QHeaderView(orientation, parent){// 默认ComboBox;m_comboBox = new QComboBox(this);m_comboBox->addItems(QStringList() << "123" << "456" << "789");}// 获取当前comboBox文字;QString getCurrentComboBoxText(){return m_comboBox->currentText();}// 设置自定义ComboBox;void setComboBoxObject(QComboBox* object){m_comboBox = object;m_comboBox->setParent(this);}protected:void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const{if (logicalIndex == 0){m_comboBox->setGeometry(rect);}else{QHeaderView::paintSection(painter, rect, logicalIndex);}}private:QComboBox * m_comboBox;};

简单测试

class MyTableWidgetWidthComboBox : public QTableWidget{Q_OBJECTpublic:MyTableWidgetWidthComboBox(QWidget *parent = Q_NULLPTR);private:CheckBoxHeaderView * m_checkBoxHeaderView;};
MyTableWidgetWidthComboBox::MyTableWidgetWidthComboBox(QWidget *parent): QTableWidget(parent){this->setAlternatingRowColors(true);this->setColumnCount(3);this->setSelectionMode(QAbstractItemView::SingleSelection);this->setEditTriggers(QAbstractItemView::NoEditTriggers);this->setSelectionBehavior(QAbstractItemView::SelectRows);// 自定义表头m_checkBoxHeaderView = new CheckBoxHeaderView(0, Qt::Horizontal, this);// 自定义ComboBox;QComboBox* comboBox = new QComboBox;comboBox->addItems(QStringList() << "abc" << "def" << "789");m_checkBoxHeaderView->setComboBoxObject(comboBox);// 设置表头;this->setHorizontalHeader(m_checkBoxHeaderView);this->setHorizontalHeaderLabels(QStringList() << "1" << "2" << "3");}

效果图

【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】

点击这里:

猜你喜欢