我刚刚开始使用Qt(确切地说是5.4),使用它为C ++项目构建GUI以控制某些硬件。
现在我的问题是,我无法使用其QLineEdit
方法更新任何QLabel
(或setText()
,但这似乎是同一个问题)文本。通过'更新',我的意思是它从主窗口构造函数调用时可以工作一次,但不会更多。
我在我定义的槽函数中使用setText()
。即使之后使用repaint()
也没有做任何事情。
我必须在这里做一些可怕的错误...
更新:这确实是正确的,我自己的代码导致GUI线程出现问题
这是一个例子
的main.cpp
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