0

我的应用程序中有一个操作可能需要几分钟才能完成。我希望显示一个简单的对话框,该对话框在操作开始时打开,显示一个简单的等待消息,如“操作进行中..”,并在操作完成时自动关闭。

为了实现上述功能,我尝试使用没有 QProgressBar 的 QProgressDialog。它似乎工作正常,但我无法设置等待消息。以下是代码:

QProgressDialog progress(this);  
QLabel *lblCustom = new QLabel(&progress);  
progress.setBar(new QProgressBar());  
progress.setValue(0);  
progress.setLabel(lblCustom);  
progress.setLabelText("Operation in progress. Please wait...");  
progress.setMaximum(0);  
progress.setMinimum(0);  
progress.setModal(true);  
progress.setWindowTitle("Validate field data");  
progress.setCancelButton(0);  
progress.setFixedSize(400, 100);  
progress.setWindowFlags(progress.windowFlags() & ~Qt::WindowCloseButtonHint);  
progress.show();  
// operation  
progress.close();

设置标签文本似乎不起作用。请让我知道这里有什么问题?我对 Qt 比较陌生。

没有等待消息的对话框

4

2 回答 2

2

为了解决实际问题,我使用 QLabel 作为对话框而不是 QProgressDialog 并调用 QApplication::processEvents(),以确保 QLabel 窗口也被绘制有合适的文本。

于 2015-12-18T14:04:57.347 回答
0

我建议您创建一个新的小部件,然后您可以根据需要进行自定义。您可以插入图像和标签,也可以创建自己的方法(包括信号和插槽)。实现起来会花一点时间,但它会更加灵活和可扩展。

于 2017-01-19T20:10:04.157 回答