Qt:TreeWidget中添加子控件,并在主窗口接收响应

来源:互联网 发布:数据读写测试用例 编辑:程序博客网 时间:2024/05/18 02:06

头文件:

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QString>#include <QTreeWidgetItem>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();private:    Ui::MainWindow *ui;    void AddItem(const QString &text);private slots:    void DelItem(QTreeWidgetItem *item);};#endif // MAINWINDOW_H

deletewidget.h

#ifndef DELETEWIDGET_H#define DELETEWIDGET_H#include <QWidget>#include <QTreeWidgetItem>namespace Ui {class DeleteWidget;}class DeleteWidget : public QWidget{    Q_OBJECTpublic:    explicit DeleteWidget(QTreeWidgetItem *idItem, QWidget *parent = 0);    ~DeleteWidget();private:    Ui::DeleteWidget *ui;signals:    int delItem(QTreeWidgetItem *idItem);private:    QTreeWidgetItem *m_idItem;private slots:    void OnDelBtnClicked();};#endif // DELETEWIDGET_H


源文件:

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include "deletewidget.h"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    setFixedSize(400,300);//设置窗口大小,并限制最大化    ui->treeWidget->setColumnWidth(0,200);//设置第一列列宽    AddItem("Bunfly.txt");    AddItem("万里长城.mp3");    AddItem("盛世狼烟.txt");}MainWindow::~MainWindow(){    delete ui;}void MainWindow::AddItem(const QString &text){    QTreeWidgetItem *item = new QTreeWidgetItem;    item->setText(0,text);    ui->treeWidget->addTopLevelItem(item);    DeleteWidget *widget = new DeleteWidget(item);    ui->treeWidget->setItemWidget(item,1,widget);    connect(widget,SIGNAL(delItem(QTreeWidgetItem*)),            this,SLOT(DelItem(QTreeWidgetItem*)));}void MainWindow::DelItem(QTreeWidgetItem *item){    int index = ui->treeWidget->indexOfTopLevelItem(item);    ui->treeWidget->takeTopLevelItem(index);    delete item;}
main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    w.show();    return a.exec();}
deletewidget.cpp
#include "deletewidget.h"#include "ui_deletewidget.h"DeleteWidget::DeleteWidget(QTreeWidgetItem *idItem, QWidget *parent) :    QWidget(parent),    ui(new Ui::DeleteWidget),m_idItem(idItem){    ui->setupUi(this);    ui->delButton->setFlat(true);//设置按钮透明    connect(ui->delButton,SIGNAL(clicked()),            this,SLOT(OnDelBtnClicked()));}DeleteWidget::~DeleteWidget(){    delete ui;}void DeleteWidget::OnDelBtnClicked(){    emit delItem(m_idItem);}
设计界面:
mainwindow.ui

deletewidget.ui


运行效果:

阅读全文
0 0