Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> qt Где здесь ошибка синтаксиса? 
:(
    Опции темы
yoweb
Дата 30.5.2013, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.5.2013

Репутация: нет
Всего: нет



qt Где здесь ошибка синтаксиса?
Код

#ifndef PREVIEWER_H
#define PREVIEWER_H

#include "ui_previewer.h"

class Previewer : public QWidget, public Ui::Form
{
    Q_OBJECT

public:
    Previewer(QWidget *parent = 0);

    void setBaseUrl(const QUrl &url);

public slots:
    void on_previewButton_clicked();

private:
    QUrl baseUrl;
};
#endif


7: error: expected class-name before '{' token
19: error: field 'baseUrl' has incomplete type

PM MAIL   Вверх
Guinness
Дата 30.5.2013, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



Цитата(yoweb @  30.5.2013,  16:36 Найти цитируемый пост)
7: error: expected class-name before '{' token

Ui::Form неизвестный класс для компилятора, сделайте соответствующий #include

Цитата(yoweb @  30.5.2013,  16:36 Найти цитируемый пост)
19: error: field 'baseUrl' has incomplete type

#include <QUrl> сделайте.


PM MAIL   Вверх
bsa
Дата 30.5.2013, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



скорее всего, класс был сделан для формы с именем Form, а она потом была переименована в Previewer. Скорее всего, необходимо заменить Form на Previewer.
PM   Вверх
rodnover
Дата 31.5.2013, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: нет
Всего: 10



Цитата

   корее всего, класс был сделан для формы с именем Form, а она потом была переименована в Previewer. Скорее всего, необходимо заменить Form на Previewer.
   

Нет, просто добавить include

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
shizoid
Дата 7.8.2013, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



А разве множетсвенное наследование от QObject классов прокатит?
PM MAIL   Вверх
bsa
Дата 7.8.2013, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



shizoid, а где ты его тут увидел? Ui::Form это примитивная структура с указателями на компоненты формы и парой методов для создания формы и для перевода.
PM   Вверх
shizoid
Дата 7.8.2013, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.11.2008

Репутация: нет
Всего: нет



Я этот фрагмент кода имел ввиду, на сколько я помню множественное наследование классов использующищ QObject запрещается.
Код

сlass Previewer : public QWidget, public Ui::Form

PM MAIL   Вверх
bsa
Дата 7.8.2013, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



shizoid, видимо ты слышал звон, но не понял откуда он. Нельзя, чтобы у одного класса было более одного предка, наследующего QObject. А больше ограничений нет.
Обычное наследование - по сути это включение членов предка в тело наследника. А вот когда появляются виртуальные методы или виртуальное наследование, то тут все усложняется.
В данном случае для Ui::Form применяется простое наследование. Мне только одно непонятно, почему оно публичное (не критично, конечно, но должно быть приватным).
PM   Вверх
akizelokro
Дата 8.8.2013, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



А почему после Q_OBJECT нет точки с запятой?

Добавлено через 1 минуту и 34 секунды
Или оно в Qt так принято?  smile 


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
bsa
Дата 8.8.2013, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



akizelokro, так принято. Потому что Q_OBJECT это "страшный" макрос, добавляющий функции, необходимые для работы сигналов и слотов.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1178 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.