Как создать пользовательскую кнопку в QT5.6.1

Я очень новичок в разработке QT. Может ли кто-нибудь поделиться «Как создать пользовательскую кнопку QPushButton в QT», чтобы пользовательская кнопка имела то же поведение, что и QPushButton, только отличается от пользовательских свойств. Поэтому, пожалуйста, любая подсказка или любое направление к этому будет полезно. Я попытался использовать пример аналоговых часов, который приведен в примере пользовательского виджета QT. Но я не нашел связанного с QPushbutton. Заранее спасибо.


person Avi    schedule 19.10.2016    source источник
comment
1) Прежде всего, вы должны начать с подкласса класса qpusbutton. 2) Затем вам нужно использовать Google, чтобы найти это видео.   -  person Mikhail    schedule 19.10.2016


Ответы (1)


Это очень просто. Сначала вам нужно создать подкласс QPushButton. Добавьте свои методы, чтобы улучшить его. Готово.

Например, я написал CustomButton, у которого есть дополнительный метод для реверсирования текста.

CustomButton.h

#ifndef CUSTOMBUTTON_H
#define CUSTOMBUTTON_H

#include <QPushButton>

class CustomButton : public QPushButton
{
public:
    CustomButton( const QString& text, QWidget* parent = 0 );

    // Enhancement, it will reverse the button text
    void reverseText();
};

#endif // CUSTOMBUTTON_H

CustomButton.cpp

#include "CustomButton.h"
#include "algorithm"

CustomButton::CustomButton( const QString& text, QWidget* parent )
    : QPushButton( text, parent )
{

}

void CustomButton::reverseText()
{
    QString buttonText = text();
    std::reverse(buttonText.begin(), buttonText.end());
    setText( buttonText );
}

main.cpp

#include <QApplication>
#include "CustomButton.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    CustomButton w( "MyButton" );
    w.show();
    w.reverseText();
    a.exec();
    return 0;
}

Кнопка выглядит так: введите здесь описание изображения

Если вы хотите сделать что-то, связанное с внешним видом. Вместо создания пользовательской кнопки вы можете использовать QStyleSheet.

person sanjay    schedule 19.10.2016
comment
Спасибо за решение, но я буду более признателен, если вы объясните/предложите, как использовать эту настраиваемую кнопку в качестве нового плагина виджета и вызвать другой проект со всеми его настраиваемыми методами, скажем, в этом случае обратный метод. - person Avi; 20.10.2016
comment
Он будет вести себя как любой другой виджет. Что вы имеете в виду под плагином? вы говорите о плагине QtCreator Designer? - person sanjay; 20.10.2016
comment
Да, плагин QtCreator Designer, который также использует класс художника для создания кнопки и не использует таблицу стилей. - person Avi; 20.10.2016