显示

时间:2017-07-05 09:52:37

标签: c++ loading qdialog

我正在编写一个代码,允许用户控制使用Qt Designer表单创建的MainWindow中的压电(PZ193E)。

但是,当我调用设计用于将压电连接到计算机的功能(从构造函数给出的外部库)时,我的UI会冻结,直到建立连接。

我正在尝试在其中显示带有QLabel的QDialog,告诉用户在连接处理时等待,但是当我这样做时,QDialog会显示但没有标签。它仅在建立连接时和QDialog可以关闭时显示。

以下是我对对话框的编码方式:

In the .h :
QDialog *_waitQD = new QDialog;
QVBoxLayout *_waitQVBL = new QVBoxLayout;
QLabel *_waitQL = new QLabel("Loading...");

In the .cpp : 
_waitQD->setMinimumSize(QSize(95,35));
_waitQVBL->addWidget(_waitQL);
_waitQD->setLayout(_waitQVBL);

然后我打电话给:

_waitQD->show();
if (_piezo.connected()) // bool funtion that return true if the connection is established
      _waitQD->close();

这就是它的样子:
Blank QDialog

2 个答案:

答案 0 :(得分:0)

理想的解决方案是在建立连接时不阻塞主线程;解决方法是在调用show

之后添加QApplication::processEvents();

答案 1 :(得分:0)

你需要调用app.exec()

total = sum(ts_tuple.value for time_series in api_query for ts_tuple in time_series.header)