如何使用插槽函数内的setText()更新QLineEdit中的文本[Qt5.4]

时间:2015-01-02 23:09:08

标签: c++ qt qlineedit qt5.4

我刚刚开始使用Qt(确切地说是5.4),使用它为C ++项目构建GUI以控制某些硬件。 现在我的问题是,我无法使用其QLineEdit方法更新任何QLabel(或setText(),但这似乎是同一个问题)文本。通过'更新',我的意思是它从主窗口构造函数调用时可以工作一次,但不会更多。 我在我定义的槽函数中使用setText()。即使之后使用repaint()也没有做任何事情。

我必须在这里做一些可怕的错误...

更新:这确实是正确的,我自己的代码导致G​​UI线程出现问题

这是一个例子

的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

0 个答案:

没有答案