8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
1

Создание диалогового окна

10.05.2014, 00:32. Показов 2584. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста описать класс диалогового окна... сейчас пробую так:

qqq.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef QQQ_H
#define QQQ_H
#include <QDialog>
#include "mainwindow.h"
 
class nitem : public QDialog {
 
private:
    Q_OBJECT
public:
    nitem(QWidget* pwgt = 0) : QDialog(pwgt){
 
    }
 
};
 
#endif // QQQ_H
И вообще по-разному пробовал, но что-то никак не выходит.
При создании объекта этого класса постоянно пишет ошибки, типа:
mainwindow.obj:-1: ошибка: LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall nitem::metaObject(void)const " (?metaObject@nitem@@UBEPBUQMetaObject@@XZ)
mainwindow.obj:-1: ошибка: LNK2001: unresolved external symbol "public: virtual void * __thiscall nitem::qt_metacast(char const *)" (?qt_metacast@nitem@@UAEPAXPBD@Z)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2014, 00:32
Ответы с готовыми решениями:

Создание модального диалогового окна поверх окна родителя
Не могу не где найти пример как это сделать. Нужно создать модальное окно поверх окна родителя...

Создание диалогового окна
Здравствуйте. Мне необходимо создать диалоговое окно. В программе есть один пункт меню &quot;о...

Создание диалогового окна и реализация прокрутки
Всем привет. Относительно недавно начал изучать Qt (до этого кодил на паскале и C++, но без гуи)....

Глюк диалогового окна
Добрый день ув. форумчане! Вчера пытался создать свое диалоговое окно. Несмотря на то, что я позже...

12
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
10.05.2014, 15:22 2
Q_OBJECT должен быть сразу же после class nitem : public QDialog { - модификатора доступа меж ними быть не должно, вообще ничего не должно быть
0
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
10.05.2014, 15:58  [ТС] 3
Кудаив, исправил. Всё так же.
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
10.05.2014, 16:06 4
очистить проект, заупстить qmake, собрать
0
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
10.05.2014, 16:10  [ТС] 5
Кудаив, с этим проблемы... я не собирал его. Установочный файл запустил и сборка готова.
Что значит очистить, как запустить qmake и как собрать?)) Можно и ссылку.
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
10.05.2014, 16:16 6
The_Prophet, в какой то из тем ты писал что на QtCreator - так?

Добавлено через 3 минуты
Цитата Сообщение от The_Prophet Посмотреть сообщение
Установочный файл запустил и сборка готова.
сборочный скрипт чтоль?
0
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
10.05.2014, 16:22  [ТС] 7
Кудаив, от сюда качал: http://qt-project.org/downloads#qt-creator
exe'шник, весит 13 mb. Сейчас там уже такого нет.
Да, Qt Creator 5.1.1
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
10.05.2014, 16:26 8
короче говоря тебе надо грохнуть все moc' и, то есть файлы сгенерированные moc-компилятором. В QtCreator это делается кликом правой кнопки мыши на проекте слева и выбрать "Очистить проект",затем в том же выпадающем окне "Запустить qmake" и собрать сызнова
1
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
10.05.2014, 16:38  [ТС] 9
Кудаив, сделал... до того как вы написали) только без очистки проекта. Всё заработало...
Поясните пожалуйста как это работает. Как я понял qt при создании своего класса не подключает либку в проект и, когда я создаю объект класса, он не может её найти и начинает ругается.

Я вообще всё это читал в учебнике Шлее М., понял, разобрался, но как бы сказать... не осознал порядка сборки проекта и т. д..
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
10.05.2014, 18:40 10
The_Prophet, тут не в либке дело
при сборке сначала генерируются ui - компилятором хидеры с именем ui_*файл формы*.h файлы, если в проекте имеются файлы формы - здесь все понятно и просто. Затем moc-компилятор пробегает по файлам проекта ища макрос Q_OBJECT (в частности), тут очень строгий синтаксис - Q_OBJECT должен идти строго после объявления
C++ (Qt)
1
class SomeClass: public QObject{
и данный класс обязан наследоваться от QObject прямо или косвенно. Если взглянуть на сгенерированный мок файл то видно что он имеет реализацию неких методов класса SomeClass, которые к слову мы в классе не объявляли - их генерирует сам moc и нужны они для обеспечения слот-сигнального соединения Qt. Ну а потом все это дело компилируется и слинковывается

Добавлено через 1 час 47 минут
Цитата Сообщение от Кудаив Посмотреть сообщение
class SomeClass: public QObject{
и кстати QObject при множественном наследовании должен идти первым в списке наследования
1
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
10.05.2014, 22:56 11
Кудаив,
и кстати QObject при множественном наследовании должен идти первым в списке наследования
Почему это?
0
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
11.05.2014, 01:58 12
Цитата Сообщение от The_Prophet Посмотреть сообщение
Да, Qt Creator 5.1.1
Лучше скачайте версию 5.2.1.
В 5.1.1. еще очень много багов.
У меня был случай, когда программа при создании стандартного QMainWindow вылетала ни с того ни с сего.
Поставил 5.2.1 и все стабильно заработало.
1
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
11.05.2014, 09:15 13
gromo, попробуй скомпилировать это
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <QObject>
 
class SomeClass
{
};
 
class Window: public SomeClass, public QObject
{
    Q_OBJECT
public:
    Window(){}
};
 
int main()
{
    Window w;
}
 
#include "main.moc"
а потом поставь QObject первым в списке наследования. Qt 4.8.5, честно говоря не знаю как насчет 5 ой версии, но думаю ничего не поменялось
0
11.05.2014, 09:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2014, 09:15
Помогаю со студенческими работами здесь

Изменение размера диалогового окна
Есть диалоговое окно с кнопкой, по нажатию на которую появляются чекбоксы например, при повторном...

Закрытие диалогового окна из слота
Приветствую! Надеюсь сможете помочь с решением данной задачи: Если смотреть глобально нужно...

Установить фон диалогового окна
Добрый день! Я пишу игру пинг-понг. Хочу, чтобы игровое поле (диалоговое окно) было зеленого...

Временное скрытие диалогового окна
Доброго времени суток. Есть окно, в котором находится QGraphicsView и QGraphicsScene....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru