Одно приложение с двумя окнами/формами, они могут прикрывать друг друга, они не родитель/ребенок отношение. Как мы можем сделать это?
С Qt Creator генерируемой виджет на основе приложения main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w1; // very simplistic
w1.show(); // demo
MainWindow w2; // for two main independent
w2.show(); // windows in Qt
// help show windows apart
w2.move(w1.geometry().left() + 50,
w1.geometry().top() + 50);
return a.exec();
}
Конечно, это можно сделать разными способами, и у меня есть подобный подход в одном из моих приложений. Имейте в виду, что приложение выйдет только после того, как вы либо явно закроете оба «главных» окна, либо можете перегрузить QWidget::closeEvent для них обоих и сделать qApp->quit(). Таким образом, сгенерированный класс MainWindow становится классом MyMainWindow с новым обработчиком событий. Также обратите внимание, что вы получаете более одной записи панели задач в Windows (также разрешимо, но не отвечаете на этот вопрос).
И вы также получили хороший комментарий для:
Одно окно имеет кнопку всплывающее окно с сообщением, как с помощью QMessageBox :: информация (это, тр («HELLO»), Tr ("МИР"));
Когда появилось окно с сообщениями, другое окно все еще может перемещаться, а - перетащить. Как мы можем сделать это?
QMessageBox::setWindowModality должно помочь.
Вы знакомы с QMdiArea? http://doc.qt.io/qt-5/qmdiarea.html – DaveyLaser
Вы можете отобразить поле «окно модальное», а не по умолчанию, которое является «модальным приложением». См. Https://doc.qt.io/qt-5/qmessagebox.html#setWindowModality – Felix