Я только начинаю с Qt (5.4, если быть точным), используя его для создания графического интерфейса для проекта C ++ для управления некоторым оборудованием.
Теперь моя проблема, я не могу обновить любой 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
Задача ещё не решена.