Qt getOpenFileNames对话框未居中于主窗口
为什么打开的对话框未居中于主窗口Qt getOpenFileNames对话框未居中于主窗口,qt,qt4,centering,fileopendialog,opendialog,Qt,Qt4,Centering,Fileopendialog,Opendialog,为什么打开的对话框未居中于主窗口 void MainWindow::on_FileOpenAction_triggered() { QStringList fileNames = QFileDialog::getOpenFileNames( this, "Open Image", QApplication::applicationDirPath(), "Images (*.jpg);;All Files (*.*)"
void MainWindow::on_FileOpenAction_triggered()
{
QStringList fileNames = QFileDialog::getOpenFileNames(
this,
"Open Image",
QApplication::applicationDirPath(),
"Images (*.jpg);;All Files (*.*)"
);
}
文件中说,这应该是可行的:
此函数用于创建具有给定父窗口小部件的模式文件对话框。如果parent不是0,则该对话框将显示在parent小部件的中心
我在Windows XP SP2上使用QT 4.6.3。中还包括以下内容:
在Windows上,该对话框将旋转一个阻止模式事件循环,该循环不会分派任何QTIMER,如果父对象不是0,则将对话框定位在父对象标题栏的正下方
这就是正在发生的事情吗?如果没有,我猜您已经在Qt中发现了一个bug。同样在中的是以下内容:
在Windows上,该对话框将旋转一个阻止模式事件循环,该循环不会分派任何QTIMER,如果父对象不是0,则将对话框定位在父对象标题栏的正下方
这就是正在发生的事情吗?如果没有,我猜您在Qt中发现了一个bug。Qt中要么有bug,要么文档中有错误。 如果需要居中对话框,请避免使用静态函数,并按以下方式创建对话框:
QFileDialog dialog(
this,
"Open Image",
QApplication::applicationDirPath(),
"Images (*.jpg);;All Files (*.*)");
dialog.setFileMode(QFileDialog::ExistingFiles);
QStringList fileNames;
if (dialog.exec())
fileNames = dialog.selectedFiles();
请注意,这使用的是Qt的文件对话框,而不是本机文件对话框。Qt中存在错误或文档中存在错误。 如果需要居中对话框,请避免使用静态函数,并按以下方式创建对话框:
QFileDialog dialog(
this,
"Open Image",
QApplication::applicationDirPath(),
"Images (*.jpg);;All Files (*.*)");
dialog.setFileMode(QFileDialog::ExistingFiles);
QStringList fileNames;
if (dialog.exec())
fileNames = dialog.selectedFiles();
请注意,这使用的是Qt的文件对话框,而不是本机文件对话框。这正是发生的情况。有没有办法避免呢。我想我应该尝试构建对话框,而不是使用hendy helper getOpenFileNames()例程。@Gad D Lord:我所知道的唯一方法就是跳过helper例程,自己定位对话框。这正是正在发生的事情。有没有办法避免呢。我想我应该尝试构造对话框,而不是使用hendy helper getOpenFileNames()例程。@Gad D Lord:我知道的唯一方法是跳过helper例程,自己定位对话框。我想以本机为中心的解决方案没有选择。任何方式都比这篇文章好。我想没有以本机为中心的解决方案。无论如何,他都不适合这个职位。