我正在尝试让一个QFileDialog来选择一个目录。但是,当对话框打开时,父窗口不会更新。它在保存拖动过它的任何其他窗口的图像的情况下执行此操作,并且在关闭对话框之前不会重新绘制。
以下代码位于我的主窗口中的一个插槽中,与QPushButton的“clicked”信号相连:
QFileDialog dlog(this);
int result;
... set dialog to directories only ...
result = dlog.exec();
if (result == QDialog::Accepted) {
... blah blah blah ...
}
它根本不会真正影响功能,因为不管怎样,当对话框打开时,用户不能与窗口交互。只是一个恼人的视觉故障。
编辑2:下面是一个最小的、可验证的、完整的示例。这段代码用一个按钮创建一个窗口。单击该按钮将打开“文件”对话框。当对话框打开时,在主窗口上拖动任何窗口都会导致上面的屏幕截图所示的呆滞。关闭对话框会导致主窗口刷新,就像什么都没有发生一样。
主窗口.h:
#include <QMainWindow>
#include <QPushButton>
#include <QFileDialog>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
public slots:
void handleclick();
};
主窗口.cpp:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QPushButton *btn = new QPushButton(this);
QObject::connect(btn, SIGNAL(clicked(bool)), this, SLOT(handleclick()));
}
void MainWindow::handleclick()
{
QFileDialog dlog(this);
dlog.exec();
}
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}