![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Artes |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 31.7.2009 Пользователь №: 974 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Я начал изучать Qt с книги по Qt 3 в то время, как на днях скачал самую последнюю версию Qt на офф сайте под Linux. Соответственно присутствуют большие отличия между тем, что написано в книге и тем, на чём я работаю. Эти различия были несущественны до того момента, как необходимо было добавить свой собственный слот в Qt Designer. В книге явно был напечатан скрин того, как в форме редактирования слотов есть кнопка Edit Slots для того, чтобы добавить свой слот, описав свой собственный метод, однако в последней версии такой кнопки почему-то не оказалось. Как я только не пытался добавить свой слот или найти эту кнопку, всё бесполезно. На введённые вручную в код слоты дизайнер не реагирует и не показывает их у себя и соответственно они не работают. Вручную весь код писать не хочется, когда есть такое удобное средство, как Qt Designer. Если знаете как добавить новые слоты к классу или объекту, например, обычной кнопки, то объясните пожалуйста.
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Дизайнер Qt4 работает совсем по другому, он не генерирует код, его файлы - *.ui - это XML.
И я думаю, что в дизайнере нельзя создать свой слот, так как слот - это метод конкретного класса-наследника от QObject. |
|
|
SABROG |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
И я думаю, что в дизайнере нельзя создать свой слот, так как слот - это метод конкретного класса-наследника от QObject. На примере QtCreator'a, но в дизайнере тот же функционал. http://www.youtube.com/watch?v=Ca8ItRtU0AA |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Artes |
![]()
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 31.7.2009 Пользователь №: 974 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
QMessageBoxx это конечно хорошо, но в нормальном слоте обычно используются данные класса, например мне надо, чтобы кнопка pushButton исчезла, для этого мне нужно как-то до неё докапаться через класс Ui_MainWindow, так как в классе MainWindow она не объявлена, а объявлена именно в Ui_MainWindow. Во первых, это напрягает, во вторых при попытке откомпиллировать код, в котором присутствует такой слот,
void MainWindow::MySlot() { Ui_MainWindow::pushButton->setEnabled(false); } компиллятор ругается уже на сам класс Ui_MainWindow со словами: error: object missing in reference to ‘Ui_MainWindow::pushButton’ Мои извинения за то, что вас в лишний раз потревожил, так как проблема решена ![]() Оказалось, что я не заметил в классе mainwindow.h приватной переменной-указателя на создаваемый объект класса Ui_MainWindow private: Ui::MainWindow *ui; Вот это и есть указатель, по которому надо всегда обращаться к даным класса Ui_MainWindow. Теперь достаточно написать в объявлении слота следующее: void MainWindow::MySlot() { ui->pushButton->setEnabled(false); } |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
QMessageBoxx это конечно хорошо, но в нормальном слоте обычно используются данные класса, например мне надо, чтобы кнопка pushButton исчезла, для этого мне нужно как-то до неё докапаться через класс Ui_MainWindow, ... Вообще это мимо темы. Тема называется "Добавление своих слотов в Qt Designer"
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 1.3.2025, 22:03 |