我想在按钮中单击一个包含一些信息的stackwidget。
然而,这样做有困难。 我有2个文件:mainwindow.cpp和ppualert.cpp,我想在用户单击主窗口中的按钮时打开文件ppualert。 (像html中的div)
我的主要问题:stackwidget总是显示,他的按钮没有响应。
我做错了什么? BTW我无法在另一个不同的窗口打开它,因为我正在使用qt linux embedded和eglfs插件,它将小部件直接写入帧缓冲区并限制在一个窗口。
这是代码:
MainWindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ppualert.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ppu = new ppuAlert(this);
connect(ppu,&ppuAlert::ppuDialogClosed,this,&MainWindow::onPPUDialogClosed);
ui->swPPU->addWidget(new ppuAlert);
ui->swPPU->hide();
}
void MainWindow::on_btnShowPPU_clicked()
{
ui->swPPU->setCurrentIndex(0);
ui->swPPU->show();
}
void MainWindow::onPPUDialogClosed()
{
ui->swPPU->hide();
}
ppualert.cpp:
#include "ppualert.h"
#include "ui_ppualert.h"
ppuAlert::ppuAlert(QWidget *parent) :
QWidget(parent),
ui(new Ui::ppuAlert)
{
ui->setupUi(this);
}
ppuAlert::~ppuAlert()
{
delete ui;
}
void ppuAlert::on_pushButton_5_clicked()
{
emit ppuDialogClosed();
}
MainWindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ppualert.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
ppuAlert *ppu;
public slots:
void on_btnShowPPU_clicked();
void onPPUDialogClosed();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
ppualert.h:
#ifndef PPUALERT_H
#define PPUALERT_H
#include <QWidget>
namespace Ui {
class ppuAlert;
}
class ppuAlert : public QWidget
{
Q_OBJECT
public:
explicit ppuAlert(QWidget *parent = 0);
~ppuAlert();
private slots:
void on_pushButton_5_clicked();
private:
Ui::ppuAlert *ui;
signals:
void ppuDialogClosed();
};
#endif // PPUALERT_H
答案 0 :(得分:1)
ppu = new ppuAlert(this);
通过MainWindow
的{{1}}家长会将ppuAlert
嵌入ppuAlert ui
。
将其更改为MainWindow ui
现在,您可以将ppu = new ppuAlert();
添加到堆叠小部件中并隐藏或显示它。
要隐藏stackWidget,请在MainWindow中添加它
ppuAlert
更改
connect(ppu,SIGNAL(ppuDialogClosed()),this,SLOT(ppuDialogClosed()));
void MainWindow::onPPUDialogClosed()
{
ui->swPPU->setHidden(true);
}
更改为ui->swPPU->addWidget(new ppuAlert);