Evgenii Legotckoi
09 липня 2018 р. 16:14

Qt/C++ - Підручник 082. Настроювані віджети в Qt Designer

Періодично виникають питання пов'язані з успадкуванням віджетів та застосування успадкованих віджетів у рамках графічного дизайнера Qt Designer.

Якщо застосування віджету в рамках коду загалом є зрозумілим, то як прикрутити кастомний віджет до ui форми на перший погляд не зрозуміло.

Давайте подивимося на прикладі спадкової кнопки QPushButton.


Спеціальна кнопка

Даний клас CustomButton, який успадкований від QPushButton і в ньому перевизначений метод mousePressEvent. Ви не побачите в даному коді нічого особливого, він просто показує, як написати клас, успадкований від будь-якого віджету Qt.

CustomButton.h

#ifndef CUSTOMBUTTON_H
#define CUSTOMBUTTON_H

#include <QPushButton>

class CustomButton : public QPushButton
{
    Q_OBJECT
public:
    explicit CustomButton(QWidget *parent = nullptr);

    // QWidget interface
protected:
    virtual void mousePressEvent(QMouseEvent* event) override;
};

#endif // CUSTOMBUTTON_H

CustomButton.cpp

#include "CustomButton.h"

CustomButton::CustomButton(QWidget *parent) : QPushButton(parent)
{

}


void CustomButton::mousePressEvent(QMouseEvent* event)
{
    // ToDo something

    QWidget::mousePressEvent(event);
}

Додавання кастомного віджету на ui-форму

1) Дана форма класу Widget, у якій нічого немає

2) Додамо на неї стандартну кнопку QPushButton

3) Викликати контекстне меню правою кнопкою миші та натисніть пункт "Перетворити на..."

4) У діалоговому вікні, що відкрилося, внести ім'я перетвореного класу і ім'я заголовного файлу. У нашому випадку це буде:

  • ім'я класу CustomButton
  • заголовний файл CustomButton.h

І натиснути кнопку додати у діалоговому вікні

5) Вибрати перетворений клас та натиснути кнопку перетворити

Вам це подобається? Поділіться в соціальних мережах!

АК
  • 09 липня 2018 р. 16:32

Благодарю, а я решил весь GUI в коде писать из-за того, что года два назад не нашел ответ на этот вопрос :) Плохо искал :C

Наверное, поэтому некоторые программисты недолюбливают Qt Designer. Приходится тратить дополнительно силы на его изучение, а иногда некотроые вещи запрятаны очень глубоко в нём.

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up