Название: Как в файле cpp получить доступ к элементу фор Отправлено: timovadia от Ноября 15, 2020, 12:30 Прошу помочь разобраться. Создал виджет проект. В файле widget.ui добавил кнопку pushButton (QPushButton) и поле textEdit (QTextEdit).
Мне нужно в поле textEdit добавить текст. Как это сделать? Как получить доступ к созданным на ui элементам формы и их методам? Понимаю, что должно быть что-то вроде этого: Код
В файле widget.cpp следующий код: Код
Название: Re: Как в файле cpp получить доступ к элементу формы (виджета)? Отправлено: kambala от Ноября 15, 2020, 12:37 из методов класса Widget все элементы из дизайнера доступны через ui->элемент, например ui->textEdit.
просто надо читать документацию :) Название: Re: Как в файле cpp получить доступ к элементу формы (виджета)? Отправлено: tux от Ноября 15, 2020, 12:41 ui->textEdit->setText("текст");
Например Название: Re: Как в файле cpp получить доступ к элементу фо Отправлено: timovadia от Ноября 15, 2020, 12:44 В widget.cpp в main() пишу:
Код
Но ничего нет. Обычно помощник высвечивает список доступных вещей. Код: ui->textEdit->setText("текст"); Пишет, что ui -- undeclared identifier. Что я делаю не так? Где его нужно объявлять? Название: Re: Как в файле cpp получить доступ к элементу фо&# Отправлено: tux от Ноября 15, 2020, 13:03 Пишет, что ui -- undeclared identifier. Что я делаю не так? Где его нужно объявлять? А вы откуда доступ то пытаетесь получить? В вашем случае это надо делать из самого вашего класса Widget. И в этом классе нет метода main :) Вообще, лучше почитать сначала документацию. Или посмотреть "видосы" на youtube Название: Re: Как в файле cpp получить доступ к элементу фо Отправлено: timovadia от Ноября 15, 2020, 13:07 А вы откуда доступ то пытаетесь получить? В вашем случае это надо делать из самого вашего класса Widget. И в этом классе нет метода main :) Хотел бы получить доступ из main(). Почему я в main не могу обращаться к элементам формы, не пойму? Буду читать и смотреть уроки.Название: Re: Как в файле cpp получить доступ к элементу фо&# Отправлено: tux от Ноября 15, 2020, 13:23 Почему я в main не могу обращаться к элементам формы, не пойму? Потому, что ui формы находится в приватной зоне. Хотите доступ из main - сделайте сеттер. Т.е. публичный метод в форме Widget, который и будет устанавливать значения в ui.Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: timovadia от Ноября 15, 2020, 13:30 Спасибо! Туман понемногу рассеивается :)
Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: kambala от Ноября 15, 2020, 13:39 а что мешает сделать все то же самое в конструкторе Widget? будет меньше возни.
Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: tux от Ноября 15, 2020, 13:40 а что мешает сделать все то же самое в конструкторе Widget? будет меньше возни. Вряд ли ТС хотел константный текст. Иначе, проще вообще в редакторе форм нужное написать. :)Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: timovadia от Ноября 15, 2020, 13:49 а что мешает сделать все то же самое в конструкторе Widget? будет меньше возни. Плохо понимаю, о чем речь. Имеется ввиду что-то вроде этого?Код
Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: tux от Ноября 15, 2020, 13:59 Код: Widget::Widget(QWidget *parent) Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: kambala от Ноября 15, 2020, 14:15 Плохо понимаю, о чем речь. значит, стоит уделить побольше времени изучению самого языка С++, а в «окошки» лезть уже после ;)предлагается перенести код из main(), связанный непосредственно с внутренностями Widget, в метод, где написано ui->setupUi(this) (после этой строки). вообще, довольно часто main() выглядит крайне однообразно и не содержит никакой логики (особенно связанной с окошками): Код
Название: Re: Как в файле cpp получить доступ к элементу фо Отправлено: timovadia от Ноября 15, 2020, 14:16 Странно. Вот пытаюсь написать , что предложили, но textEdit не видно.
(https://i.ibb.co/ng6rhCb/widget.png) (https://ibb.co/1v7ZH6L) Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: kambala от Ноября 15, 2020, 14:20 значит, открывай дизайнер (свой файл ui), выделяй текстовое поле на своей форме и смотри какой у него идентификатор
Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: timovadia от Ноября 15, 2020, 14:32 значит, открывай дизайнер (свой файл ui), выделяй текстовое поле на своей форме и смотри какой у него идентификатор Идентификатор так и называется textEdit. Появился после запуска Ctrl+R. Спасибо.Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: tux от Ноября 15, 2020, 14:39 Идентификатор так и называется textEdit. Лучше присваивать осмысленные имена. В будущем. :)Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: Авварон от Ноября 15, 2020, 16:08 значит, открывай дизайнер (свой файл ui), выделяй текстовое поле на своей форме и смотри какой у него идентификатор Идентификатор так и называется textEdit. Появился после запуска Ctrl+R. Спасибо.После изменения формы надо собрать проект, иначе Креатор видит старую версию сгенеренного хедера. Впрочем, они могли бы это и пофиксить. Название: Re: Как в файле cpp получить доступ к элементу фор Отправлено: kambala от Ноября 15, 2020, 16:17 вроде давно пофиксили, даже файл формы сохранять не надо по-моему...
|