我想在单击按钮时显示一个包含一些信息的堆栈小部件。
但是,执行此操作时遇到了麻烦。 我有 2 个文件:mainwindow.cpp 和 ppualert.cpp,我想在用户单击主窗口中的按钮时打开文件 ppualert。 (类似于 html 中的 div)
我的主要问题:stackwidget 一直显示,但他的按钮没有响应。
我做错了什么? 顺便说一句,我无法在另一个不同的窗口中打开它,因为我正在使用 qt linux 嵌入式和 eglfs 插件,它将小部件直接写入帧缓冲区并限制在一个窗口中。
代码如下:
主窗口.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();
}
主窗口.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
最佳答案
ppu = new ppuAlert(this);
传递ppuAlert
的MainWindow
父级将嵌入ppuAlert ui
在MainWindow ui
上。将其更改为
ppu = new ppuAlert();
现在您可以将ppuAlert
添加到堆叠小部件并隐藏或显示它。要隐藏 stackWidget ,将其添加到 MainWindow
connect(ppu,SIGNAL(ppuDialogClosed()),this,SLOT(ppuDialogClosed()));
改变
void MainWindow::onPPUDialogClosed() { ui->swPPU->setHidden(true); }
- 将此
ui->swPPU->addWidget(new ppuAlert);
更改为ui->swPPU->addWidget(ppu);
关于c++ - 在qt中显示stackwidget并隐藏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31371454/