Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Обработка событий |
Автор: kirufka 2.2.2009, 02:29 | ||
Извиняюсь за сттоль глупый вопрос, но в мануалах написано не отчетливо, а книгу прочесть некогда. На форме 3 обьекта pb-кнопка le-line edit lb-lable. Всё это в dialog.ui лежит, тоесть при компиляции получаю файл ui_dialog.h Каким образом мне всетаки при нажатии pb текстом lb сделать содержимое le ![]() ui подключаю вот так:
![]() |
Автор: just_geek 2.2.2009, 03:10 | ||
как то так... |
Автор: kirufka 2.2.2009, 21:39 | ||||
Мммм что то у меня всё не получается щас буду сидеть дальше париться ![]() Вот что получилось, может где не правильно:?
вот что пишет:
|
Автор: pan2004 2.2.2009, 21:59 |
kirufka, в main() забыл объявить QApplication и вызвать exec(). Добавлено через 1 минуту и 13 секунд вообще ошибки как будто отсутствует определение какой-то виртуальной функции... Как компилируешь и собираешь, собственно? |
Автор: SABROG 2.2.2009, 22:08 |
Что-то путаница какая-то. Наследуемся от Ui::Dialog, при этом класс обзываем Dialog... Может хотябы myDialog его сделать? Я точно не уверен, но не спутает ли компилятор конструктор Dialog с базовым конструктором Dialog, который уже без явного namespace используется в родительском классе? |
Автор: kirufka 2.2.2009, 22:27 | ||||||
Нет тоже самое пишет. СЕйчас выложу всё.... Dialog.ui не крепится вот здесь есть http://www.sharemania.ru/0159700 Вот subjc.cpp
Компилирую так:
Вот процесс:
|
Автор: pan2004 2.2.2009, 22:47 |
проблема судя по всему здесь, Q_OBJECT создает несколько виртуальных функций в классе, которые должны обрабатываться moc ом и потом должен получаться из них отдельный cpp и потом .o файл, подключения которого и не видно. Я уже сталкивался с таким поведением на линуксе, бага судя по всему в qmake. Что можно посоветовать... хз, попробуй вынести свой класс в отдельные файлы, разделив на .h и .cpp. Убери все остальные файлы, включая .pro, и сгенерируй все по новой. |
Автор: kirufka 2.2.2009, 23:02 |
Ладно завтра буду думать что ещё тут можно замутить... Попробую как вы говорите. Я то думал что во всём виновата глобальная кривота моих рук ![]() |
Автор: SABROG 2.2.2009, 23:04 | ||||
Как раз поэтому существует техника, которая позволяет сначала запустить генератор .moc файла, прежде чем начать компиляцию. Что стоит сделать сейчас:
Если ошибка останется, то:
|
Автор: just_geek 3.2.2009, 05:45 |
ну если используешь сигналы/слоты, то объявление класса ОБЯЗАТЕЛЬНо должно быть в .h файле, а имплементация в .cpp Иначе moc не будет генерировать файлик. |
Автор: kuzulis 3.2.2009, 08:53 |
just_geek прав, нужно вынести отдельно объявление и реализацию Dialog т.е или разбить на 2 файла *.h и *.cpp или просто все в *.h написать (если методы простые и их мало) ![]() |
Автор: SABROG 3.2.2009, 09:07 |
Не обязательно, читай мой пост выше. |
Автор: kuzulis 3.2.2009, 09:19 | ||
а нахрена? ![]() |
Автор: SABROG 3.2.2009, 09:36 | ||||
|
Автор: just_geek 3.2.2009, 11:56 |
SABROG, хм, не знал ![]() |
Автор: kirufka 3.2.2009, 12:08 | ||||||||||
И вправду добавление subjc.moc подействавало)) Всё компилится на ура)) Но только теперь при запуске того же кода получаю:
Добавлено через 13 минут и 12 секунд Хм, попытка не пытка, попробовал вот так сделать)
При запуске из консоли сразу же завершается, но ошибок не выдает |
Автор: pan2004 3.2.2009, 12:25 |
kirufka, я ж тебе писал, что ты забыл не только QApplication, но еще и вызов app.exec(). Обычно делается так в main() QApplication app(argc, argv); ... return app.exec(); |
Автор: just_geek 3.2.2009, 12:26 | ||
|
Автор: kirufka 3.2.2009, 12:31 |
И вправду, спасибо большое)) помечаю как solved. Насчет первой работы с QT могу сказать порадовало, надо разобраться, думаю ничего сложного не будет) |