小弟剛接觸QT開發,有個事件處理問題請教各位前輩,多謝
一、目標:捕獲鼠標點擊QTreeWidget下的QTreeWidgetItem的事件,然後進入事件處理函數,對點擊不同item的事件做不同的動作
二、問題:點擊界面上的item後,沒有執行事件處理函數
三、代碼:
1、頭文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTabWidget>
#include <QGroupBox>
#include <QTreeView>
#include <QTreeWidget>
#include <QVBoxLayout>
#include <QStandardItemModel>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QGroupBox *box;
QVBoxLayout *vbox;
QTabWidget *tabWidget1;
QTabWidget *tabWidget2;
QTreeWidget *treeWidget;
Ui::MainWindow *ui;
private slots:
void action_main1(QTreeWidgetItem*,int);
};
2、cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QWidget>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
treeWidget = new QTreeWidget(this);
treeWidget->setColumnCount(1);
treeWidget->setGeometry(30,30,200,400);
QTreeWidgetItem *tree_item1 = new QTreeWidgetItem(treeWidget,QStringList(QString("111111")));
connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(action_main1(QTreeWidgetItem*,int)));
......
}
void MainWindow::action_main1(QTreeWidgetItem*,int)
{
tabWidget1->hide();
tabWidget2->show();
}
事件可以用兩種方式做:
1. 如果你使用的有QT designer的話,那就直接 右鍵 找到對應的itemClicked 綁定就可以了
2. 就是你現在的做法,你的 action_main1 有沒有指定 是 public slot, 以及 itemclick 指定是 signals?