在QT中创建多个主窗口

时间:2015-06-02 06:07:45

标签: qt qt4 qt4.8

感谢您阅读此帖。我搜索了论坛,博客和SO,但无法得到我真正需要的东西。

我正在尝试如何显示多个主窗口。我使用的是嵌入式硬件板。我已成功将QT lib移植到它上面。

我写了一个小程序。

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

}

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

的main.cpp

int main(int argc, char *argv[])
{

        QApplication a(argc, argv);
        MainWindow text_plane;
        text_plane.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
        text_plane.setStyleSheet("background-color: Black;");
        text_plane.show();
        a.exec();
        return a.exec();
}

以上代码仅显示一个窗口。 即使我在text_plane.show()之后创建一个Mainwindow w1,如

int main(int argc, char *argv[])
    {

            QApplication a(argc, argv);
            MainWindow text_plane,w1;
            text_plane.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
            text_plane.setStyleSheet("background-color: Black;");
            text_plane.show();

            w1.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
            w1.setStyleSheet("background-color: Yellow;");
            w1.show();

            a.exec();
            return a.exec();
    }

现在只显示w1窗口。 text_plane窗口怎么样?怎么回来。

任何人都可以帮我解决这个问题。 谢谢

1 个答案:

答案 0 :(得分:1)

首先,我想知道,你想在这里实现什么目标:

a.exec();
return a.exec();

你知道,你只需要调用一次这个方法。

其次,您的两个窗口都会显示(您可以在任务栏中看到它),但是,由于您设置了Qt::FramelessWindowHint,其中一个窗口会被绘制在另一个窗口之上。您可以使用move(或类似的东西)拆分它们:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MainWindow w, w1;
    w.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
    w.setStyleSheet("background-color: Black;");
    w.show();
    w1.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
    w1.setStyleSheet("background-color: Yellow;");
    w1.show();

    w.move(0, 0);
    w1.move(100, 100);

    return app.exec();
}