Qt:TreeWidget中添加子控件,并在主窗口接收响应
2017-10-15 18:06
681 查看
头文件:
mainwindow.h
deletewidget.h
#ifndef DELETEWIDGET_H
#define DELETEWIDGET_H
#include <QWidget>
#include <QTreeWidgetItem>
namespace Ui {
class DeleteWidget;
}
class DeleteWidget : public QWidget
{
Q_OBJECT
public:
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
mainwindow.ui
deletewidget.ui
运行效果:
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QString> #include <QTreeWidgetItem> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: 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_OBJECT
public:
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::~DeleteW a4be idget() { delete ui; } void DeleteWidget::OnDelBtnClicked() { emit delItem(m_idItem); }设计界面:
mainwindow.ui
deletewidget.ui
运行效果:
相关文章推荐
- VC++单文档分割窗口、在视图中添加控件,并响应该控件的事件
- Qt QTreeWidget节点的添加+双击响应+删除详解(转)
- Qt从零开始制作串口调试助手-(第二章、主窗口控件添加)-Creator_Ly
- Qt 给主窗口添加背景但不覆盖控件
- Qt QTreeWidget节点的添加+双击响应+删除详解
- QTMovieView overlay - 在播放窗口上面添加控件
- 学习记录-Qt窗口控件的动态添加和删除
- Qt QTreeWidget节点的添加+双击响应+删除详解
- VC++单文档分割窗口、在视图中添加控件,并响应该控件的事件
- Qt QTreeWidget节点的添加+双击响应+删除详解
- Qt:TreeWidget(树控件)的简单操作
- Qt QTreeWidget节点的添加+双击响应+删除详解
- Qt 控件添加阴影效果
- QT主窗口创建菜单、工具栏和状态栏,添加上下文菜单
- 初学Qt:初步了解Windows窗口基本控件
- Android自定义控件系列 十:利用添加自定义布局来搞定触摸事件的分发,解决组合界面中特定控件响应特定方向的事件
- iOS开发之在scrollview上添加点击并解决其子控件的点击无响应(如tableView)
- Qt5—可停靠窗口QDockWidget [2013-10-19整理]
- 使控件子窗口的响应鼠标滚轮消息
- 在treeWidget中加入控件