Название: Функция Отправлено: Hans от Апрель 01, 2010, 18:15 Добрый день.
У меня вопрос. Наверное очень простой, но все же. Вот код. Код: #include <QtGui/QApplication> Как сделать, чтобы при нажатии на кнопку текст лейбла становился, как в лайнэдите? Сколько информации про qt не читал, везде про connect, слоты и сигналы. Я про это понял, но ведь здесь же не сделаешь так... Прошу не посылать меня по ссылкам, а просто помочь. :) Название: Re: Функция Отправлено: BRE от Апрель 01, 2010, 18:25 Код
Вместо ручного позиционирования виджетов лучше воспользоваться Layout'ами. Название: Re: Функция Отправлено: Hans от Апрель 01, 2010, 18:37 Нееет. Мне же нужно, чтобы текст изменялся при нажатии на кнопку! А в вашем примере он изменяется сразу при вводе текста.
Я с сигналами и слотами понял - это отличная штука для связи двух объектов. А я хочу понять, как при нажатии на кнопку (1 объект) текст в лейбле (2 объект) становился таким же, как и в лайнэдите (3 объект). :) Название: Re: Функция Отправлено: SimpleSunny от Апрель 01, 2010, 18:46 Лучше определить свой класс "форма" и внутри него соединять сигнал clicked со слотом изменить текст.
Название: Re: Функция Отправлено: BRE от Апрель 01, 2010, 19:01 Нееет. Мне же нужно, чтобы текст изменялся при нажатии на кнопку! А в вашем примере он изменяется сразу при вводе текста. Ааа, ну тогда без помощи дополнительного класса этого не сделать.Я с сигналами и слотами понял - это отличная штука для связи двух объектов. А я хочу понять, как при нажатии на кнопку (1 объект) текст в лейбле (2 объект) становился таким же, как и в лайнэдите (3 объект). :) Лучше все это оформит в отдельный класс-виджет, как советует SimpleSunny. Название: Re: Функция Отправлено: Hans от Апрель 01, 2010, 19:39 А как это сделать в данном случае?
Все три объекта должны находится внутри моего класса-виджета? Сейчас попробовал сделать - не получается. Я очень много примеров посмотрел - но там как-то много лишнего... Буду очень благодарен, если вы напишите код. :) Я чувствую, что тогда я сразу пойму, что к чему. Название: Re: Функция Отправлено: Hans от Апрель 01, 2010, 20:24 Вот что я пробую сделать, отталкиваясь от различных примеров
widget.h Код: #ifndef WIDGET_H Код: #include "widget.h" Но все это не работает. И я не знаю, как это прикрутить к нажатию на кнопку. Название: Re: Функция Отправлено: BRE от Апрель 01, 2010, 20:35 Набирал прямо здесь, могут быть опечатки.
widget.h Код
widget.cpp Код
Название: Re: Функция Отправлено: SimpleSunny от Апрель 01, 2010, 20:38 Почти правильно =). Стоит почитать хотя бы Бланшет, тогда всё станет для Вас яснее.
А по теме, свои собственные сигналы не нужны, нужно ловить сигнал от кнопки, и в слоте менять надпись. Код
Код
Название: Re: Функция Отправлено: Hans от Апрель 01, 2010, 21:05 Спасибо, конечно, только ничего не работает. :)
В примере BRE очень много ошибок показывает. Две ошибки из-за пропуска одной точки с запятой, а остальные такого типа /usr/include/qt4/QtGui/qpushbutton.h:99: note: QPushButton::QPushButton(QPushButtonPrivate&, QWidget*) и такого /home/hans/Qtfunc/widget.cpp:16: error: no matching function for call to ‘QLineEdit::QLineEdit(const char [26], <unresolved overloaded function type>)’ В примере SimpleSunny всего три: /home/hans/Qtfunc/widget.cpp:9: error: ‘class Ui::Widget’ has no member named ‘pushButton’ /home/hans/Qtfunc/widget.cpp:14: error: ‘class Ui::Widget’ has no member named ‘label’ /home/hans/Qtfunc/widget.cpp:14: error: ‘class Ui::Widget’ has no member named ‘lineEdit’ Цитировать Стоит почитать хотя бы Бланшет, тогда всё станет для Вас яснее. Я пытаюсь по Шлее :) Название: Re: Функция Отправлено: BRE от Апрель 01, 2010, 21:14 В примере BRE очень много ошибок показывает. Я предупреждал про опечатки. ;)Сделай: qmake make Название: Re: Функция Отправлено: Hans от Апрель 01, 2010, 21:20 Спасибо, работает. :) Буду разбирать этот код...
|