一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

引言

  在项目中点击按钮,弹出颜色选择对话框,但同时应用程序会在应用程序输出一栏中显示

QWindowsWindow::setGeometry: Unable to set geometry 180x30+345+311 (frame: 202x86+334+266) on QWidgetWindow/"QColorDialogClassWindow" on "\\.\DISPLAY1". Resulting geometry: 599x478+345+311 (frame: 621x534+334+266) margins: 11, 45, 11, 11 minimum size: 599x478 maximum size: 599x478 MINMAXINFO maxSize=0,0 maxpos=0,0 mintrack=621,534 maxtrack=621,534)

  这篇文章就是解决这个问题。目前只适用于本人描述的这种情况。

解决方法

  首先展示一下颜色对话框的创建部分代码:

1 void Widget::on_colorBtn_clicked()
2 {
3    m_color = QColorDialog::getColor(defaultColor,this,QString(QStringLiteral("颜色选择对话框")),QColorDialog::ShowAlphaChannel);
4 }

  这样创建的颜色对话框点击按钮之后,显示颜色对话框的同时,也会在应用程序输出栏中显示上面的问题。实际上需要设置颜色对话框的位置大小,上面展示的代码无法设置颜色对话框的位置大小,所以修改颜色对话框这段代码。

 1 void Widget::on_colorBtn_clicked()
 2 {
 3     QColor defaultColor = QRgb("#008B8B");
 4     QColorDialog colorDlg(this);
 5     colorDlg.setGeometry(200,200,300,280);
 6     colorDlg.setWindowTitle(QStringLiteral("颜色选择对话框"));
 7     colorDlg.setCurrentColor(defaultColor);
 8     if (colorDlg.exec() == QColorDialog::Accepted) {
 9         m_color = colorDlg.selectedColor();
10     }
11 }

  上面使用创建颜色对话框的方式,设置了颜色对话框的大小位置后,再运行程序,点击按钮,出现颜色对话框的时候就不会出现引言中提到的问题了。此时如果注释掉颜色的对话框的位置大小设置后,就会出现。即关键是这句 colorDlg.setGeometry(200,200,300,280)。

posted on 2024-02-22 10:48  一杯清酒邀明月  阅读(150)  评论(0编辑  收藏  举报