0

我刚开始使用 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
4

0 回答 0