小弟刚接触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?
楼主具体是怎么解决的啊