| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > [qt4] работа с указателем ui |
| Автор: gordmiand 15.2.2010, 15:45 |
| В хидере переношу Ui::MainWindow *ui; из private в public, но все равно надо указывать ui->lineEdit->… почему? |
| Автор: Любитель 15.2.2010, 18:09 |
| Потому что дело не в прайват/паблик. Просто lineEdit vожно было писать только для глобальных переменных, полей класса (в том числе наследованных, если это паблик/протектед), параметров функции и локальных переменных функции. И всё. |
| Автор: gordmiand 15.2.2010, 20:41 |
| это не только с lineEdit такая петрушка получается... и для label тоже... получается для все компонентов ui-> указывать надо? Добавлено через 10 минут и 53 секунды это не только с lineEdit такая петрушка получается... и для label тоже... получается для все компонентов надо железно указывать ui-> ? |
| Автор: bsa 15.2.2010, 21:02 | ||
gordmiand, сделай наследование от Ui::MainWindow - после этого не нужно будет писать ui->...
|
| Автор: gordmiand 15.2.2010, 21:57 | ||||
mainwindow.h
main.cpp
такие вот ошибки... что не так? совсем я заблудился в этих классах |
| Автор: gordmiand 15.2.2010, 23:47 | ||||
mainwindow.h
main.cpp
такие вот ошибки... что не так? совсем я заблудился в этих классах и вообще - при создании проекта какой базовый класс надо выбирать: Qmainwindow, QWidget, Qdialog... в чем их отличие? |
| Автор: gordmiand 16.2.2010, 20:46 | ||||
mainwindow.h
main.cpp
такие вот ошибки... что не так? совсем я заблудился в этих классах и вообще - при создании проекта какой базовый класс надо выбирать: Qmainwindow, QWidget, Qdialog... в чем их отличие? |
| Автор: kuvshinka 16.2.2010, 23:31 | ||
| bsa: у меня что-то тоже не получается: что за класс MyWidget? базовый (который указываестя при создании приложения)? у меня базовый - MainWindow.... а какой надо указывать? пробую так:
ошибки invalid use of incomplete type 'struct Ui::MainWindow', forward declaration of 'struct Ui::MainWindow' |
| Автор: zayacnk 16.2.2010, 23:42 | ||||
| Попробуй по пунктам: 1. Создаешь форму например с кнопкой pbSet и строкой lText и сохраняешь форму в MainWindow.ui ObjectName у формы MainWindow 2. Создаешь хедер mainwindow.h следующго содержания:
3. Исходник mainwindow.cpp следующего содержания
За опечатки сорри. Собственно ui указывать перед именами объектов формы указывать не надо |
| Автор: Любитель 17.2.2010, 00:19 |
Только форвард-декларейшен при наследовании не применим. Компилятор должен знать сразу, сколько памяти классу нужно и т. д. Форвард декларейшен примением только для указателя/ссылки, но не для базового класса. |
| Автор: bsa 17.2.2010, 00:27 |
| kuvshinka, в твоем варианте используется идиома PIMPL. Т.е. Ui подключается в cpp файле. В этом случае без ui-> не обойтись. Я имел в виду то, что привел в пример zayacnk |
| Автор: kuvshinka 17.2.2010, 00:31 |
| а хедер и исходник создавать полностью руками или можно их скомпилить при разработке формы в qt designer? |
| Автор: bsa 17.2.2010, 14:07 |
| kuvshinka, если не ошибаюсь, дизайнер работает только с ui файлами. Поэтому h/cpp нужно создавать вручную. |