切换窗口在QT GUI应用程序
Switch windows in QT GUI app
我正试图在我的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'没有指定类型
但是当我只包括第一个窗口而不是其他两个窗口时,我没有得到这个问题。
可能是由递归引起的
不要在头文件中包含其他类。只将它们包含在源文件中。
如果出于某种原因需要在其他类的头文件中使用另一个类,请使用前向声明而不是include。
头:// no include for 'video.h'
class video;
class MainWindow : public QMainWindow {
//...
video *myVideoWindow;
};
源:#include "video.h"
//...
据我所知,有两件事可能是错误的:
- 预处理程序
/宏
如果您使用QtCreator/Designer创建了其他窗口,则#ifndef宏应该是唯一的。意思是,video。h应该是这样的:
#ifndef VIDEOWINDOW_H #define VIDEOWINDOW_H
而不是默认的
#ifndef MAINWINDOW_H #define MAINWINDOW_H
这些#ifndef MACROS旨在帮助包含头文件的内容一次且仅一次
缺少包含路径
另外,如果你使用QtCreator,编辑器应该显示#include "video.h"和#include "flightdata.h"作为链接(ctrl +左键)。如果语法下划线为红色,则表示项目无法找到这些文件。
然后你需要检查这些文件是否在你的项目文件夹中,或者在你的文件的qmake变量INCLUDEPATH中添加这些文件的路径。
# e.g. INCLUDEPATH += ../myflightdata ../myvideofiles
相关文章:
- GCP 或 AWS 是否支持 C++ 和 GUI 应用程序开发?
- 多线程Windows GUI应用程序中的死锁
- 为什么在Visual Studio中用c ++编写GUI应用程序的代码与控制台应用程序的代码不同?
- 如何使用Visual Studio 2017和Qt开发GUI应用程序?
- 是否可以在QT GUI应用程序中处理事件时播放加载动画指示器?
- QTCreator GUI应用程序中包含窗口基源代码并在代码中打开
- Qt GUI应用程序在与GUI交互时停止实时进程
- 如何将QT GUI应用程序的版本打印到主机上
- 您如何从已经运行的GUI应用程序中启动使用GUI的可执行文件
- QT 4.x/5.x和OpenGL用于桌面GUI应用程序:选择哪种模块
- Qt Gui 应用程序部署
- 在非GUI应用程序,优点和缺点中使用QT
- 使用 Qt 的简单线程 gui 应用程序的结构是什么?
- 如何将命令行插入 GUI 应用程序
- 如何在QT GUI应用程序中进行正确的线程处理
- Qt Creator中的Qt GUI应用程序构建设置
- 编译或运行PyQT4 GUI应用程序时,排除(或禁用)log4clus警告
- 在 Linux/Windows 上使用 c++ 的 GUI 应用程序
- cv::imshow在GUI应用程序运行时阻塞线程
- 如何在Qt GUI应用程序中嵌入输出控制台窗口