我刚开始使用 Qt(准确地说是 5.4),使用它为 C++ 项目构建 GUI 以控制一些硬件。现在我的问题是,我无法更新使用其方法显示的任何QLineEdit
(或QLabel
,但这似乎是同一个问题)文本。setText()
通过“更新”,我的意思是当从主窗口构造函数调用时它工作一次,但不再工作。我setText()
在我定义的槽函数中使用。即使repaint()
之后立即使用也没有做任何事情。
我一定在这里做错了什么……
更新:这确实是正确的,我自己的代码导致 GUI 线程出现问题
这是一个例子
主文件
int main( int argc, char* argv[] ) {
QApplication app(argc, argv);
CmainWindow mainApp;
mainApp.show();
return app.exec();
}
CMainWindow.h
class CMainWindow : public QMainWindow, private Ui::MainWindow {
Q_OBJECT
Q_DISABLE_COPY( CMainWindow )
public:
CMainWindow( QWidget *parent = 0 );
~CMainWindow();
public slots:
void slotButtonConnectClicked(void);
protected:
void setConnections();
private:
AbstractReader_t* pReader;
QString* ErrorString; // conversion mule for std::string
);
CMainWindowConnections.cpp
void CMainWindow::setConnection(void) {
Q_CHECK_PTR( pushButton_Connect )
connect( pushButton_Connect, SIGNAL( clicked() ), this, SLOT( slotButtonConnectClicked()) );
}
CMainWindow.cpp
CMainWindow::CMainWindow( QWidget *parent ) : QMainWindow(parent) {
pReader = NULL;
ErrorString = new QString("GUI Initialized"); // just something to test
setupUi(this);
setConnections();
lineEdit_Error->setText(*ErrorString); // this works !
}
void CMainWindow::slotButtonConnectClicked( void ) {
lineEdit_Error->setText("Initialising..."); // this wont show
// some of my own code here caused problem
} //nope, not even after here