Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Nikita68 от Сентябрь 27, 2014, 00:41



Название: Ui + наследник QGraphicsView.
Отправлено: Nikita68 от Сентябрь 27, 2014, 00:41
Всем, доброго времени суток)

Подскажите, пожалуйста.

Я создаю ui. Там есть возможность, как я понимаю, пользоваться стандартными классами. Я хочу использовать наследник QGraphicsView. В нем я переопределю только метод resizeEvent(QGraphicsEvent *).

Подскажите, пожалуйста, как мне решить эту проблему.

Спасибо за внимание)


Название: Re: Ui + наследник QGraphicsView.
Отправлено: Bepec от Сентябрь 27, 2014, 00:49
А проблему то ты забыл описать :) Доброго времени суток.


Название: Re: Ui + наследник QGraphicsView.
Отправлено: gil9red от Сентябрь 27, 2014, 00:56
Всем, доброго времени суток)

Подскажите, пожалуйста.

Я создаю ui. Там есть возможность, как я понимаю, пользоваться стандартными классами. Я хочу использовать наследник QGraphicsView. В нем я переопределю только метод resizeEvent(QGraphicsEvent *).

Подскажите, пожалуйста, как мне решить эту проблему.

Спасибо за внимание)

В дизайнере тыкаете правой кнопкой мыши на QGraphicsView, и выбираете "Преобразовать в ...", далее в появившемся окне добавляете свой класс и жмете "Преобразовать"
После этого вместо стандартного виджета, будет создаваться ваш.


Название: Re: Ui + наследник QGraphicsView.
Отправлено: Nikita68 от Сентябрь 27, 2014, 04:08
взял из примеров по Бланшету - HexSpinBox. Но тут загвоздка - пишет ошибки:

Что я сделал не так? ставил галку, что не глобально.

Вот код ui:

#ifndef UI_UIMAINWINDOW_H
#define UI_UIMAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QWidget>
#include "hexspinbox.h"

QT_BEGIN_NAMESPACE

class Ui_UiMainWindow
{
public:
    QWidget *centralwidget;
    HexSpinBox *spinBox;
    QMenuBar *menuB;

    void setupUi(QMainWindow *UiMainWindow)
    {
        if (UiMainWindow->objectName().isEmpty())
            UiMainWindow->setObjectName(QString::fromUtf8("UiMainWindow"));
        UiMainWindow->resize(240, 243);
        UiMainWindow->setMinimumSize(QSize(0, 0));
        UiMainWindow->setMaximumSize(QSize(16777215, 16777215));
        UiMainWindow->setLayoutDirection(Qt::LeftToRight);
        centralwidget = new QWidget(UiMainWindow);
        centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
        spinBox = new HexSpinBox(centralwidget);
        spinBox->setObjectName(QString::fromUtf8("spinBox"));
        spinBox->setGeometry(QRect(60, 80, 42, 22));
        UiMainWindow->setCentralWidget(centralwidget);
        menuB = new QMenuBar(UiMainWindow);
        menuB->setObjectName(QString::fromUtf8("menuB"));
        menuB->setGeometry(QRect(0, 0, 240, 19));
        UiMainWindow->setMenuBar(menuB);

        retranslateUi(UiMainWindow);

        QMetaObject::connectSlotsByName(UiMainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *UiMainWindow)
    {
        UiMainWindow->setWindowTitle(QApplication::translate("UiMainWindow", "\320\234\320\276\320\264\320\265\320\273\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 \320\221\320\241\320\241", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class UiMainWindow: public Ui_UiMainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_UIMAINWINDOW_H

А вот ошибки:

05:04:49: Выполняется сборка проекта test...
05:04:49: Запускается: «C:\Qt\qtcreator-2.4.0\mingw\bin\mingw32-make.exe»
[ 12%] Building CXX object CMakeFiles/test.dir/main.cpp.obj
In file included from D:\c_program\cpp\hexspinbox\/MyMainWindow.h:4,
                 from D:\c_program\cpp\hexspinbox\main.cpp:6:
D:/c_program/cpp/hexspinbox/build/ui_UiMainWindow.h:21:24: error: hexspinbox.h: No such file or directory
In file included from D:\c_program\cpp\hexspinbox\/MyMainWindow.h:4,
                 from D:\c_program\cpp\hexspinbox\main.cpp:6:
D:/c_program/cpp/hexspinbox/build/ui_UiMainWindow.h:29: error: ISO C++ forbids declaration of 'HexSpinBox' with no type
D:/c_program/cpp/hexspinbox/build/ui_UiMainWindow.h:29: error: expected ';' before '*' token
D:/c_program/cpp/hexspinbox/build/ui_UiMainWindow.h: In member function 'void Ui_UiMainWindow::setupUi(QMainWindow*)':
D:/c_program/cpp/hexspinbox/build/ui_UiMainWindow.h:42: error: 'spinBox' was not declared in this scope
D:/c_program/cpp/hexspinbox/build/ui_UiMainWindow.h:42: error: expected type-specifier before 'HexSpinBox'
D:/c_program/cpp/hexspinbox/build/ui_UiMainWindow.h:42: error: expected ';' before 'HexSpinBox'
mingw32-make.exe[2]: *** [CMakeFiles/test.dir/main.cpp.obj] Error 1
mingw32-make.exe[1]: *** [CMakeFiles/test.dir/all] Error 2
mingw32-make.exe: *** [all] Error 2
05:04:57: Процесс «C:\Qt\qtcreator-2.4.0\mingw\bin\mingw32-make.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта test (цель: Настольный компьютер)
Во время выполнения сборки на этапе «Сборка»


Название: Re: Ui + наследник QGraphicsView.
Отправлено: Nikita68 от Сентябрь 27, 2014, 04:38
Ребят, помогло добавление файлов hexspinbox.cpp + hexspinbox.h в папку сборки.
Тему, наверное, можно закрывать.

Спасибо за внимание и за полезные советы)


Название: Re: Ui + наследник QGraphicsView.
Отправлено: gil9red от Сентябрь 27, 2014, 09:04
Пожалуйста, для этого форум и создавался :)