頭檔案:
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::~DeleteWidget()
{
delete ui;
}
void DeleteWidget::OnDelBtnClicked()
{
emit delItem(m_idItem);
}
設計界面:
mainwindow.ui

deletewidget.ui
運作效果: