LINUX.ORG.RU

[Qt][нуб] как переопределить paintEvent у виджета


0

0

Начал изучать qt и почти в самом начале наткнулся на фигню которую никак не могу понять.

Выбрал qdevelop в качестве IDE. Сделал формочку с помощью qt designer. на формочке - один виджет (Graph).

После сборки у меня сгенерился вот такой код:

class Ui_MainWindow
{
public:
    ...
    QWidget *Graph;
    ...

    void setupUi(QMainWindow *MainWindow)
    {
        ...
        centralwidget = new QWidget(MainWindow);
        ...
        Graph = new QWidget(centralwidget);
        ...
        QMetaObject::connectSlotsByName(MainWindow);
    }
};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

Этот код сгенерен и менять его я как-бы не могу.

Теперь я хочу переопределить paintEvent() у Graph чтобы что-нибудь там нарисовать.
Но беда в том, что мне получается доступен для изменения только экземпляр класса QWidget, которого зовут *Graph.

Как мне переопределить paintEvent у *Graph?
Переписывать весь setupUi заново? (при любой модификации формы придётся заниматься каждый раз копипастингом)
Или qt designer годится только для того чтобы сделать формочку, взять нагенеренный код и менять его? (думаю всё не так всё же)

★★★★★

создать свой виджет, который наследуется от QWidget и переопределяет
paintEvent(). в проекте использовать свой виджет.

rudnykiv ()

Делай сам класс-наследник.

Его потом можно засунуть в дизайнер и автоматически сгенерировать ui

Kosyak ★★★★ ()

Спасибо всем. Вроде разобрался.

Nao ★★★★★ ()

Не рекомендовал бы пользовать qt-designer, лучше ручками и layout-manager'ами пользоваться :)) куда проще и удобней

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.