Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
registr |
16.8.2010, 11:23
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1
|
Не могу никак разобраться с появлением диалогового окна в главном окне. Помогите, пожалуйста, разобраться. Вот сам код:
createdialog.h createdialog.cpp В главном окне Диалог вызывается соответственно: При компиляции выдается сообщение: macro "CreateDialogW" requires 4 arguments, but only 1 given макрос "CreateDialogW" требует 4 аргумента, но дан только 1 Выдается ошибка в файле createdialog.h в конструкторе declaration does not declare anything декларация ничего не декларирует Бью голову, не понимаю в чем дело... |
|
|
|
|
BRE |
16.8.2010, 11:29
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Попробуй дать другое имя классу, не CreateDialog, а например, просто Dialog.
|
|
|
|
|
Litkevich Yuriy |
16.8.2010, 11:34
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(registr @ 16.8.2010, 15:23) Link #include <QDialog.h> * первого файла точно не существует, хотя на виндовозе может и прокатит.#include "mainwindow.h" * второй файл за каким лешим в диалоге. * В конструкторе диалога упоминается указатель на тип QWidget, однако а нём ни слуху ни духу (может, конечно, и из mainwindow.h) П.С. название у класса - CreateDialog, дурацкое. Класс - это имя существительное, а не глагол |
|
|
|
|
registr |
16.8.2010, 11:45
Сообщение
#4
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1
|
// Попробуй дать другое имя классу, не CreateDialog, а например, просто Dialog.
Делал по учебнику (Бланшет), там FindDialog, у меня соответственно CreateDialog, т.к. он отвечает диалогу создания карты. Разве в названии дело? // * первого файла точно не существует, хотя на виндовозе может и прокатит. один в один сделано из Бланшета 2008, 2-ое изд, стр. 12 // * второй файл за каким лешим в диалоге. здесь вы правы, он не нужен // * В конструкторе диалога упоминается указатель на тип QWidget, однако а нём ни слуху ни духу (может, конечно, и из mainwindow.h) я не профи, сделал так, как в книге. Если сделать конструктор по умолчанию (т.е. CreateDialog()), то ошибка та же самая |
|
|
|
|
Алексей1153 |
16.8.2010, 11:48
Сообщение
#5
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
registr, назови MyCreateDialog
|
|
|
|
|
registr |
17.8.2010, 12:12
Сообщение
#6
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1
|
BRE, Litkevich Yuriy, Алексей1153 спасибо! Назвал класс MyDialog и конструктор MyDialog() - диалоговое окно появилось.
Но появилась другая проблема. (см. рисунок demo.jpg). У меня есть два разных класса: MainWindow и MyDialog. Метод нажатия на клавишу "Oк" okPush() принадлежит классу MyDialog, а метод создания новой карты create_new() принадлежит классу MainWindow. А как их сочленить так, чтобы при нажатии на клавишу "Ok" вызывался метод create_new()? Подскажите пожалуйста как это сделать граммотно и профессионально? |
|
|
|
|
Алексей1153 |
17.8.2010, 12:18
Сообщение
#7
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
Если грамотно - то лучше сделать класс-менеджер карты, ну а так - отправить сигнал от MyDialog к MainWindow, в слоте которого вызвать нужную функцию. Или саму эту функцию слотом и назначить
|
|
|
|
|
BRE |
17.8.2010, 12:19
Сообщение
#8
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
|
|
|
|
|
Алексей1153 |
17.8.2010, 12:20
Сообщение
#9
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
registr, и слово "пожалуйста" с диалога убери - чай не в Англии )) Даже как-то некрасиво смотрится
Сообщение отредактировал Алексей1153 - 17.8.2010, 12:20 |
|
|
|
|
registr |
17.8.2010, 12:29
Сообщение
#10
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1
|
Цитата(BRE @ 17.8.2010, 13:19) Link О, спасибо! Цитата(Алексей1153 @ 17.8.2010, 13:18) Link Если грамотно - то лучше сделать класс-менеджер карты, ну а так - отправить сигнал от MyDialog к MainWindow, в слоте которого вызвать нужную функцию. Или саму эту функцию слотом и назначить Гы, а как отправить сингал? Как я понимаю сингал определяется только в классе и является функцией-членом данного класса. А тут получается два разных объекта разных классов со своими функциями-методами, вчера весь вечер голову ломал |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 3:33 |