切换两个主窗口

Switching two mainwindows

我是 QT GUI 编程的新手。 我正在尝试通过使用 show 和 hide.

来测试连续切换两个 mainwindows

我在 main.cpp

中创建了一个简单的代码
      main(){
      QApplication a(argc , argv)
      Mainwinodw1 *window1 = new Mainwindow1();
      Mainwinodw1 *window2 = new Mainwindow2();

      for (;;)

        {
           window1->show();
           delay();
           window1->hide();

           window2->show();
           delay();
           window2->hide();

        }

      return a.exec();

      }

测试只能显示 windows 一次,但在第二次迭代期间它们不会显示和隐藏。

谁能帮忙解决这个问题。

尝试使用 Qt 计时器而不是硬编码延迟函数。

main.cpp 文件:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Mainwindow1 *window1 = new Mainwindow1();
    Mainwindow2 *window2 = new Mainwindow2();
    WindowSwitcher ws(window1, window2, 2000);

    window1->show();

    return a.exec();
}

WindowSwitcher源代码:

#include "windowswitcher.h"
#include <QTimer>

WindowSwitcher::WindowSwitcher(QMainWindow *w1, QMainWindow *w2, int delay) : QObject(), window1(w1), window2(w2)
{
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(switchWindow()));
    timer->start(delay);
}

void WindowSwitcher::switchWindow()
{
    if (window1->isVisible())
    {
        window1->hide();
        window2->show();
    }
    else
    {
        window1->show();
        window2->hide();
    }
}

WindowSwitcher 头文件:

#include <QObject>
#include <QMainWindow>

class WindowSwitcher : public QObject
{
    Q_OBJECT
public:
    explicit WindowSwitcher(QMainWindow *w1, QMainWindow *w2, int delay);

private:
    QMainWindow *window1;
    QMainWindow *window2;

public slots:
    void switchWindow();
};