程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> qtreewidget-QT5中QTreeWidget捕獲不到點擊事件(已解決)

qtreewidget-QT5中QTreeWidget捕獲不到點擊事件(已解決)

編輯:編程解疑
QT5中QTreeWidget捕獲不到點擊事件(已解決)

小弟剛接觸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?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved