QMessageBox::question 显示到固定位置
时间: 2023-09-07 09:11:29 浏览: 86
MessageBox控制显示位置
4星 · 用户满意度95%
QMessageBox::question 是 Qt 框架中用于显示询问对话框的函数。它本身并没有提供直接控制对话框位置的方法,但您可以通过以下步骤将其移动到指定的位置:
1. 获取 QMessageBox 对话框的窗口句柄,可以通过 QMessageBox::winId() 方法获取。
2. 创建一个 QWindow 对象并将其作为 QWidget 的子类,然后使用 QWindow::fromWinId() 方法将其与 QMessageBox 对话框关联。
3. 调用 QWidget::move() 方法移动 QMessageBox 对话框到指定位置。
下面是一个示例代码片段,可以将 QMessageBox::question 对话框移动到屏幕上的 (100, 100) 位置:
```cpp
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "Question", "Do you want to proceed?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
// 用户选择了“是”
} else {
// 用户选择了“否”
}
// 获取 QMessageBox 对话框的窗口句柄
WId msgBoxId = QMessageBox::activeWindow()->winId();
// 创建一个 QWindow 对象并关联
QWindow* window = QWindow::fromWinId(msgBoxId);
QWidget* widget = QWidget::createWindowContainer(window, this);
// 移动对话框到指定位置
widget->move(100, 100);
```
需要注意的是,这种方法可能会影响到对话框的可移植性和可维护性,因此建议谨慎使用。
阅读全文