2015-03-27 3 views
0

У меня есть элемент управления QTextEdit в графическом интерфейсе. Я хочу связать его с элементом управления так же, как и на C# или MFC, но не могу найти команду.Как подключить переменную к элементу управления QTextEdit

По существу у меня есть это:

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 

private: 
    Ui::MainWindow *ui; 
    QString fileName_; 

    QMap<QString, unsigned int> vars_; // this is the data I want to associate 
}; 

и в классе Ui :: MainWindow у меня есть:

class Ui_MainWindow 
{ 
public: 
    QWidget *centralWidget; 
    QTextEdit *ALU;  // this is the control I want to associate with the data 
. 
. 
. 

Я уверен, что это тривиально, но я не могу видеть, как связать экземпляр карты с GUI-контролем.

Могу ли я быть слепым или использовать Qt другой шаблон?

+0

Что вы подразумеваете под ссылкой? Вы хотите сохранить ссылку на 'vars_' внутри' ALU'? – svlasov

+0

Я просто хочу привязать одно из значений карты к элементу управления, чтобы при обновлении элемента управления значение переменной изменялось и наоборот. – Stefan

ответ

1

Вы можете использовать сигнал QTextEdit::textChanged().

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    explicit MainWindow(QWidget *parent = 0) : QMainWindow(parent) 
    { 
     connect(ALU, SIGNAL(textChanged()), this, SLOT(updateVars())); 
     ... 
    } 

private slots: 
    void updateVars() 
    { 
     // do something with vars_ 
    } 
}; 
+0

Это хорошо в том, что он сохраняет значение элемента управления переменной, он там автоматизированный способ, который я могу мгновенно обновить GUI, это переменные изменения в фоновом режиме? – Stefan

+0

Нет решения «из коробки». Вы можете написать простой класс, который наследует 'QObject' с' vars_' внутри и выдает 'changed()' сигнал всякий раз, когда вы обновляете 'vars_'. Вы также можете использовать 'QTimer' для периодической проверки' vars_' для изменений. Но все это, вероятно, было бы излишним. – svlasov

+0

О, это позор. Неважно, я буду перепроектировать код и сделать это по-другому. Спасибо за помощь! – Stefan

Смежные вопросы