Название: Вопрос по UI и не только Отправлено: makar182 от Август 29, 2014, 17:37 Доброго времени суток,
Помогите с двумя вопросами, пожалуйста. 1) Обычно, если одна форма UI в проекте, то обращение к её элементам проходит как ui->(object name). А что, если в проекте (Проект по чтению таблиц типа Excel) вложены несколько классов типа QDialog, которые имеют несколько своих форм UI - как обращаться к их элементам? 2)Как ликвидировать ошибку "binding of reference to type 'QString' to a value of type 'const QString' drops qualifiers..." (ругается на самую первую строчку с 'if') Код: bool MainWindow::loadFile(const QString &filename) Название: Re: Вопрос по UI и не только Отправлено: Авварон от Август 30, 2014, 11:52 вангую, что readFile принимает неконстантную ссылку
Название: Re: Вопрос по UI и не только Отправлено: kambala от Август 30, 2014, 12:52 1) dialog->ui->(object name), хотя желательно такого кода избегать и использовать сигналы/слоты
Название: Re: Вопрос по UI и не только Отправлено: makar182 от Сентябрь 01, 2014, 08:41 1) dialog->ui->(object name), хотя желательно такого кода избегать и использовать сигналы/слоты Понял. А в случае слот/сигналов, обращение к виджетам, реализованным в ui, также по схеме dialog->ui->(object name)? P.S.: Здесь dialog это имя главного виджета в .ui? Название: Re: Вопрос по UI и не только Отправлено: Bepec от Сентябрь 01, 2014, 10:07 Схема простая:
(Указатель на главный виджет(окно) )->ui->(указатель на виджет к которому обращаемся)->(метод виджета). dialog->ui->lineEdit->setText В сигнал- слотах нужен указатель на виджет, так что обрезаем метод. Но такой код не рекомендуется. Он ненадёжен и в нём имеются подводные камни. Название: Re: Вопрос по UI и не только Отправлено: 8Observer8 от Сентябрь 02, 2014, 11:24 Понял. А в случае слот/сигналов, обращение к виджетам, реализованным в ui, также по схеме dialog->ui->(object name)? P.S.: Здесь dialog это имя главного виджета в .ui? Допустим у нас есть MainWindow, а на нём кнопка (или пункт меню). При нажатии на кнопку вызывается диалоговое окно. На диалоговом окне есть поля ввода и кнопка Ok. Чтобы получить данные с этого диалогового окна надо в нём сделать отправку сигнала с введёнными данными (emit). А в MainWindow сделать слот для принятия данных. И соединить сигнал с диалогового окна и слот для принятия данных. Вот как это примерно выглядит: Создаём диалог с кнопкой и полем ввода. При нажатии на кнопку диалог отправляет сигнал (emit): Код
В MainWindow создаём слот для принятия данных: Код
При нажатии подпункта MainWindow в меню вызываем диалог и связываем сигнал и слот, описанные выше: Код
|