Диалоговое окно, проблемы |
Здравствуйте, гость ( Вход | Регистрация )
Диалоговое окно, проблемы |
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 |
#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
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 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
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 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
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 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 |
О, спасибо! Если грамотно - то лучше сделать класс-менеджер карты, ну а так - отправить сигнал от MyDialog к MainWindow, в слоте которого вызвать нужную функцию. Или саму эту функцию слотом и назначить Гы, а как отправить сингал? Как я понимаю сингал определяется только в классе и является функцией-членом данного класса. А тут получается два разных объекта разных классов со своими функциями-методами, вчера весь вечер голову ломал |
|
|
Текстовая версия | Сейчас: 27.12.2024, 4:56 |