我正在编写一个代码,允许用户控制使用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();
这就是它的样子:
答案 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)