qmessagebox问题,可以't改变其位置



我有这个

int MainWindow::messageBox( QString button, QMessageBox::ButtonRole buttons, QString info, QMessageBox::Icon icon )
{
    QFont f;
    f.setPointSize(6);
    QMessageBox *message = new QMessageBox(this);
    message->setWindowModality(Qt::WindowModal);
    message->setFont(f);
    message->setText(info);
    message->addButton( button, buttons );
    message->setWindowTitle("MainWindow");
    message->setIcon(icon);
    message->move( this->width() / 2, this->height() / 2 );
    return message->exec();
}

但我无法将qmessagebox移到屏幕中央,我也尝试过使用setGeometry,但它不起作用。对此有什么想法吗?

在移动它之前,我使用show()解决了问题。这是代码:

int MainWindow::messageBox( QString button, QMessageBox::ButtonRole buttons, QString info, QMessageBox::Icon icon )
{
    QFont f;
    QMessageBox *message = new QMessageBox(this);
    QDesktopWidget *win = new QDesktopWidget();
    f.setPointSize(6);
    message->setWindowModality(Qt::WindowModal);
    message->setFont(f);
    message->setText(info);
    message->addButton( button, buttons );
    message->setWindowTitle("MainWindow");
    message->setIcon(icon);
    message->show();
    message->move( win->width() / 2 - message->width() / 2, win->height() / 2 - message->height() / 2 );
    return message->exec();
}

使用窗口标志Qt::Dialog(以及间接的Qt::Window)创建QMessageBox。这意味着它将被视为一个系统窗口,即使它已经分配了一个父窗口。当您在其上调用move()时,它将位于桌面坐标中。

当你在上面的代码中移动消息框时,你会告诉它显示在桌面坐标上,该坐标等于主应用程序窗口大小从原点(桌面左上角)偏移的宽度和高度的一半。

如果您的主应用程序窗口的大小为400x200,那么无论您的主要应用程序窗口位于何处,您的消息框都将显示在桌面坐标200100处。

如果将应用程序窗口设置为全屏,然后显示消息框,则消息框应(大致)显示在桌面显示的中心。我这么说大概是因为你指定的是消息框左上角的位置,而不是消息框的中心

如果您希望消息框始终显示在屏幕中心,则需要使用QDesktopWidget提供的信息来确定正确的屏幕坐标。

相关内容

  • 没有找到相关文章

最新更新