运行截图如下:
代码如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QTreeWidgetItem> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); public slots: void treeWidgetOpenEditor(QTreeWidgetItem *item,int col); void treeWidgetCloseEditor(); private: Ui::Widget *ui; QTreeWidgetItem *m_myItem; int m_myCol; }; #endif // WIDGET_H
widget.cpp
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); m_myItem=NULL; m_myCol=-1; QStringList strList; strList.append("第一列"); strList.append("第二列"); ui->treeWidget->setHeaderLabels(strList); this->setWindowTitle("CSDN IT1995"); for(int i=0;i<10;i++){ QTreeWidgetItem *newItem=new QTreeWidgetItem(ui->treeWidget); newItem->setText(0,"第"+QString::number(i)+"行,第1列"); newItem->setText(1,"第"+QString::number(i)+"行,第1列"); ui->treeWidget->addTopLevelItem(newItem); } ui->treeWidget->setStyleSheet("QTreeWidget::item{height:20px}");// 设置行距大小,可以防止编译修改完成以后,行距会发生变化 connect(ui->treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(treeWidgetOpenEditor(QTreeWidgetItem*,int))); connect(ui->treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*,int)),this,SLOT(treeWidgetCloseEditor())); } Widget::~Widget() { delete ui; } void Widget::treeWidgetOpenEditor(QTreeWidgetItem *item, int col) { ui->treeWidget->openPersistentEditor(item,col); m_myItem=item; m_myCol=col; } void Widget::treeWidgetCloseEditor() { if(m_myItem!=NULL){ ui->treeWidget->closePersistentEditor(m_myItem,m_myCol); } }
main.cpp
#include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }