gpt4 book ai didi

c++ - 在qt中显示stackwidget并隐藏它

转载 作者:行者123 更新时间:2023-11-28 06:10:25 24 4
gpt4 key购买 nike

我想在单击按钮时显示一个包含一些信息的堆栈小部件。

但是,执行此操作时遇到了麻烦。我有 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

最佳答案

  1. ppu = new ppuAlert(this); 传递 ppuAlertMainWindow 父级将嵌入 ppuAlert uiMainWindow ui 上。

  2. 将其更改为 ppu = new ppuAlert();现在您可以将 ppuAlert 添加到堆叠小部件并隐藏或显示它。

  3. 要隐藏 stackWidget ,将其添加到 MainWindowconnect(ppu,SIGNAL(ppuDialogClosed()),this,SLOT(ppuDialogClosed()));

  4. 改变

    void MainWindow::onPPUDialogClosed()
    {
    ui->swPPU->setHidden(true);
    }
  5. 将此 ui->swPPU->addWidget(new ppuAlert); 更改为 ui->swPPU->addWidget(ppu);

关于c++ - 在qt中显示stackwidget并隐藏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31371454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com