![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
FladeX |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Не получается разобраться с слотом для автоматического заполнения полей.
Имеется следующий код, реализующий простенькую форму с 5 QLabel, 5 QLineEdit и 3 QPushButton:
Мне нужно сделать автозаполнение всех 5 QLineEdit при нажатии на automode. Я добавил connect, но с описанием слота, а точнее функции setValue() возникли затруднения. Подскажите плиз, как надо сделать. |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
connect(automode, SIGNAL(clicked()), x1edit, SLOT(setValue())); я так понимаю здесь setValue() предпологается членом твоего класса MyWidget?если так то в функции коннект нужно указывать this, вместо x1edit П.С. пока непоздно, перенеси весь класс MyWidget в отдельную пару файлов mywidget.h и mywidget.cpp, не взирая на компактность примера. |
|
|
SABROG |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
И опять нет макроса Q_OBJECT и в конце "include main.moc"
Я вообще советую не создавать динамически кнопочки. Лучше .ui файл создать и как сказал Юрий вынести класс в отдельные файлы. И тоже верно подмечено setValue - слот MyWidget'a, а не x1edit. И возьми за правило передавать parent'a дочерним объектам, а то рано или поздно нарвешься на утечку памяти. А то ведь когда наступит время перепроектировать интерфейс придется угробить не мало времени, чтобы все переделать. Цитата но с описанием слота, а точнее функции setValue() возникли затруднения Какие? Просто реализуй функцию. А вообще когда дело доходит до такого количество однотипных коннектов есть смысл поместить кнопки в QButtonGroup. Сообщение отредактировал SABROG - 20.2.2009, 9:17 |
|
|
FladeX |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
если так то в функции коннект нужно указывать this, вместо x1edit Поправил. Сама функция такая будет?
Но тогда с областью видимости не могу разобраться, компилятор ругается
В отдельные файлы вынесу, мне главное принцип понять на примере данной функции, а дальше разберусь (надеюсь). |
|
|
SABROG |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Ну правильно пишет, ведь у тебя объекты объявляются и создаются в конструкторе и только в пределах видимости (скобок {}) о них известно. Как временное решение могу посоветовать объявление указателей вынести в секцию данных класса.
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
x1edit.setText("x1"); Но тогда с областью видимости не могу разобраться, компилятор ругается у тебя все объекты созданы:во-первых/во-вторых, как указатели, а ты их используешь как обычные переменные; во-вторых/во-первых, обявлены в конструкторе, а раз ты их хочешь использовать за пределами его, то надо вынести в объявление класса; |
|
|
FladeX |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ткните плиз пальцем, где и что не так:
На примере x1edit можете показать "как надо"? Был бы весьма признателен. ЗЫ. Трудно разобраться с ООП после скриптовых языков... |
|
|
SABROG |
![]()
Сообщение
#8
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
FladeX |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Не работает. Вообще не появляется окно, хотя компилится все нормально...
|
|
|
SABROG |
![]()
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#11
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
FladeX |
![]()
Сообщение
#12
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Q_OBJECT добавил, main.moc тоже добавил. Не компилируется теперь.
Погуглил про main.moc - как я понял это в моем случае и не нужно... |
|
|
SABROG |
![]()
Сообщение
#13
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Q_OBJECT добавил, main.moc тоже добавил. Не компилируется теперь. Погуглил про main.moc - как я понял это в моем случае и не нужно... Ну если не нужно, тогда объясни что ты понял. Q_OBJECT добавил, Куда? main.moc Куда? Как собирал? И совсем будет замечательно, если ты запостиш сюда ошибку, которую тебе выдало, а также исходный код, который получился в итоге и набор команд, которыми ты все это добро собирал. Сообщение отредактировал SABROG - 20.2.2009, 23:26 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#14
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
FladeX, ты победил свое творение или нет?
|
|
|
FladeX |
![]()
Сообщение
#15
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Нет..
На одном форуме вроде подсказали как надо, но все равно не до конца.. Сейчас пытаюсь доделать тот вариант. Собираю
Ошибки... Каждый раз разные. запутался в конец.. Код:
Сборка и ошибки:
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#16
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
FladeX, ошибка простая, она связана со знанием работы MOC,
#include <main.moc> надо перенести после объявления и реализации класса, т.к. его еще не встречается в коде, вот MOC инезнает ничего о нем.вот как должно быть: ![]() П.С. не делай qmake -project файл проекта уже есть, надо только: qmake make П.П.С. я тебе неспроста говорил: П.С. пока непоздно, перенеси весь класс MyWidget в отдельную пару файлов mywidget.h и mywidget.cpp, не взирая на компактность примера. от гемороя сразу бы избавился
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 8.6.2025, 22:00 |