我有一个应用程序在Qt和一个MainWindow。现在,我还添加了一个可以连接的帮助QDialog。这个QDialog不影响程序流,它只是显示信息。如何在MainWindow的一侧启动第二个QDialog窗口?
但是,开头总是在主窗口的顶部:/
所以我想启动它在主窗口的一侧,使其不妨碍欣赏到主窗口?怎么样?
我有一个应用程序在Qt和一个MainWindow。现在,我还添加了一个可以连接的帮助QDialog。这个QDialog不影响程序流,它只是显示信息。如何在MainWindow的一侧启动第二个QDialog窗口?
但是,开头总是在主窗口的顶部:/
所以我想启动它在主窗口的一侧,使其不妨碍欣赏到主窗口?怎么样?
在我看来,你应该试试这个,
使用QWidget的过载::的setParent()函数来改变一个QDialog的widget的所有权,使用设置为NULL(但它不会分享父母的任务栏条目)。
QDialog :: show()立即返回控制给调用者,所以它不会干扰主窗口流。
假设您的应用程序处于全屏模式。那么QDialog应该出现在哪里?它会显示在上面,你不会再满意。
如果它不影响应用程序的流动,那么您正在使用它来传达某种消息。你能用不同的方式吗?例如,QStatusBar?
如果不是这样,为什么不分开mainWindow与QSplitter或类似的类,并提供一个区域,您可以发布所有信息?
这听起来你想要无模式的对话。在主窗口中,使用插槽创建对话框。
void MainWindow::show_dialog()
{
if (pDialog== NULL)
pDialog= new XYZ_Dialog(this);
QPoint p = pos();
QSize s = frameSize();
pDialog->setGeometry(p.x()+s.width(), p.y(), s.width()*1/2, s.height());
pDialog->show();
}
我试图说的是,如果新的对话框中的位置困扰你,你设置的位置和大小它,可见它。