QStackWidget内的QPushButton点击事件被发送到父窗口

时间:2015-04-26 06:13:19

标签: qt

我有一个MainWindow类,其中有一个QStackWidget。 在其中我有另外3个小部件,每个小部件都是我自己的自定义类,派生自QWidget。

在其中一个小部件中,我有一个按钮。

当我使用QT Creator并按下按钮上的Go to slot..时,它会在MainWindow类中创建一个on_button_clicked事件。

如何更改它以在自定义类中包含事件?

更新: 我可以看到按钮位于MainWindow中。这是自动生成的,所以我不确定如何移动它。

代码: mainwindow.cpp:

#include "mainwindow.h"
#include  "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_2_clicked()
{
    QMessageBox::information(this, "Button 2 clicked!", "Click");
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>668</width>
    <height>630</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QStackedWidget" name="stackedWidget">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>10</y>
      <width>531</width>
      <height>391</height>
     </rect>
    </property>
    <property name="currentIndex">
     <number>1</number>
    </property>
    <widget class="Stack1" name="page">
     <widget class="QPushButton" name="pushButton">
      <property name="geometry">
       <rect>
        <x>140</x>
        <y>110</y>
        <width>321</width>
        <height>121</height>
       </rect>
      </property>
      <property name="text">
       <string>Button on Stack1</string>
      </property>
     </widget>
    </widget>
    <widget class="Stack2" name="page_2">
     <widget class="QPushButton" name="pushButton_2">
      <property name="geometry">
       <rect>
        <x>110</x>
        <y>140</y>
        <width>371</width>
        <height>161</height>
       </rect>
      </property>
      <property name="text">
       <string>Button on stack2</string>
      </property>
     </widget>
    </widget>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>668</width>
     <height>25</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <customwidgets>
  <customwidget>
   <class>Stack1</class>
   <extends>QWidget</extends>
   <header>stack1.h</header>
   <container>1</container>
  </customwidget>
  <customwidget>
   <class>Stack2</class>
   <extends>QWidget</extends>
   <header>stack2.h</header>
   <container>1</container>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

我希望按钮回调位于我的自定义类stack2.cpp

#include "stack2.h"

Stack2::Stack2(QWidget *parent) : QWidget(parent)
{

}

Stack2::~Stack2()
{

}

0 个答案:

没有答案