LINUX.ORG.RU

Qt: передать значение из QLineEdit в глобальную переменную


0

1

Текст, введённый в окне, пытаюсь поместить в переменную word

#include <QtGui>

QString word;

class My_widg: public QWidget // главное окно
{
    Q_OBJECT
public:
    My_widg(QWidget *parent=0);
public slots:
    void input_word();
};
My_widg::My_widg(QWidget *parent)
    :QWidget(parent)
{
    QPushButton *but = new QPushButton("Open", this);
    QObject::connect(but, SIGNAL(clicked()), SLOT(input_word()));
    QLabel *lab = new QLabel(this);
    lab->setText(word);
    lab->setGeometry(2, 20, 30, 30);
}
class QLineEdit;
class Input_word: public QDialog // здесь я пытаюсь ввести значение
{                               // чёртовой переменной word
    Q_OBJECT
public:
    Input_word(QWidget *pwgt=0);
public:
    QLineEdit *txt;
};
Input_word::Input_word(QWidget *pwgt)
    :QDialog(pwgt)
{
    txt = new QLineEdit(this);
    QPushButton *but_ok = new QPushButton("Ok", this);
    QObject::connect(but_ok, SIGNAL(clicked()), SLOT(accept()));
    but_ok->setGeometry(2, 20, 30, 30);
    QPushButton *but_cancel = new QPushButton("Cancel", this);
    QObject::connect(but_cancel, SIGNAL(clicked()), SLOT(reject()));
    but_cancel->setGeometry(34, 20, 50, 30);
}

void My_widg::input_word()
{
    Input_word *input_w = new Input_word;
    if (input_w->exec()==QDialog::Accepted)
    {
        word = input_w->txt->text();
    }
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    My_widg w;
    w.show();
    return app.exec();
}

#include "main.moc"
и ни шиша. Чяднт? Здесь всё загнал в один файл, на самом деле их несколько.



Последнее исправление: Voroshek (всего исправлений: 3)

По всей видимости, ты хочешь, чтобы введённое в диалоге значение показывалось в лейбле на главной форме, и, скорее всего, ты пришёл на Qt после Java или Python.

word - это не ссылка, это сам объект. Изменение его не приведёт к изменению лейбла.

«word = input_w->txt->text()» не устанавливает текст в главном окне, нужно насильно сделать lab->setText(input_w->text->text()).

И обрати внимание на QInputDialog.

schizoid ★★★
()

не пиши на ++, пожалуйста, гавнокода на ++ и так просто пред пруди.... есть же QtQuick... я думаю он тебе будет куда ближе.

Jetty ★★★★★
()
Ответ на: комментарий от schizoid

schizoid

И обрати внимание на QInputDialog

Спасибо

schizoid

ты пришёл на Qt после Java или Python

Неужели так заметно? Да, питон.

shizoid

По всей видимости, ты хочешь

В идеале всё несколько сложнее, я сделал lab, чтобы посмотреть, появилось ли что-то в word. Но в целом, спасибо, именно этого я и не докурил

Voroshek
() автор топика

Вам бы книжек по ++ почитать для начала, а потом уже в Qt лезть.
А то ведь мозг окончательно испортите.

trex6 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.