【Qt】QInputDialog setGeometry: Unable to set geometry 问题

【Qt】QInputDialog setGeometry: Unable to set geometry 问题

文章目录

    • I - 问题背景
    • II - 解决办法
    • III - 参考链接

I - 问题背景

创建了一个 QMainWindow 并在上边创建了布局,尝试调用 QInputDialog 的 getInt 静态方法,结果运行时出现了以下警告

QWindowsWindow::setGeometry: Unable to set geometry 120x30+860+477 (frame: 136x69+852+446) on QWidget/"QInputDialogClassWindow" 
on "\\.\DISPLAY1". Resulting geometry: 122x108+860+477 (frame: 138x147+852+446) margins: 8 , 31, 8, 8 minisize: 122x108 maximum size 
524287x108 MINMAXINFO maxSize=0,0 maxpos=0,0 mintrack=138,147 maxtrack=524303,147)

静态方法为

static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0,
	int minValue = -2147483647, int maxValue = 2147483647,
	int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());

我这里的代码 参数 value 为 1,minValue = 0, step = 1,调用如下

int maximumVal(ui->textEdit()->document()->blockCount());
bool ok(false);

int line = QInputDialg::getInt(this, tr("Application Name"), tr("Input Name"),
			 1, 0, maximumVal, 1, &ok);

网上参考了很多链接都没办法解决问题
比如 new 出来,父控件设置为 this ,设置最小尺寸 setMinimumSize 等等的

II - 解决办法

最终找到了解决方法 ,设置 Qt::Flags 为以下内容

(Qt::WindowCloseButtonHint|Qt::MSWindowsFixedSizeDialogHint)

完整代码如下

int defaultValue(1), minimumVal(0), step(1);
int maximumVal(ui->textEdit()->document()->blockCount());
bool ok(false);

int line = QInputDialog::getInt(this, tr("Application Name"), tr("Input Name"), 
				defaultValue, minimumVal, maximumVal, step, &ok,
				Qt::WindowCloseButtonHint|Qt::MSWindowsFixedSizeDialogHint);

III - 参考链接


https://blog.csdn.net/koenlee/article/details/85554499
https://bugreports.qt.io/browse/QTBUG-73258
https://stackoverflow.com/questions/54307407/why-am-i-getting-qwindowswindowsetgeometry-unable-to-set-geometry-warning-wit

你可能感兴趣的:(Qt,qt,开发语言,c++)