gpt4 book ai didi

c++ - 在 QT GUI 应用程序中切换窗口

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:18 24 4
gpt4 key购买 nike

我试图在我的 3 个窗口之间建立链接,所以我把它放在我的 mainwindow.h 中:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "video.h"
#include "flightdata.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

public slots:
void openNewWindowVideo();
void openNewWindowData();


private:
Ui::MainWindow *ui;
video *myVideoWindow;
flightdata *myDataWindow;
};

#endif // MAINWINDOW_H

这在我的实现中:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->actionVideo,SIGNAL(triggered()),this,SLOT(openNewWindowVideo()));

connect(ui->actionFlight_data,SIGNAL(triggered()),this,SLOT(openNewWindowData()));

}

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

void MainWindow::openNewWindowVideo()
{
myVideoWindow = new video();
myVideoWindow->show();
this->close();

}

void MainWindow::openNewWindowData()
{
myDataWindow = new flightdata();
myDataWindow->show();
this->close();

}

这有效。

但是当 O 对其他 2 个窗口(file.h + file.cpp)执行相同的步骤时,

我得到错误: qt 错误:'flightdata' 没有命名类型 qt 错误:'video' 没有命名类型

但是当我只包含第一个窗口而不包含另外两个窗口时,我不会遇到这个问题。

可能是递归引起的

最佳答案

不要在头文件中包含其他类。仅将它们包含在源文件中。

如果您出于某种原因需要在其他类的 header 中使用另一个类,请使用前向声明而不是包含。

标题:

// no include for 'video.h'
class video;

class MainWindow : public QMainWindow {
//...
video *myVideoWindow;
};

来源:

#include "video.h"
//...

关于c++ - 在 QT GUI 应用程序中切换窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173208/

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