Во всяком случае, я разработал взломать это. То, что я пытаюсь сделать, это отделить внешний вид от фактического объекта кнопки. Вот пример кода, который необходимо расширить для большей функциональности
file :: VirtualQPushButton.h
#ifndef VIRTUALQPUSHBUTTON_H
#define VIRTUALQPUSHBUTTON_H
#include <QPushButton>
//! \class Class that forwards signals to the base button
class VirtualQPushButton : public QPushButton
{
Q_OBJECT
public:
VirtualQPushButton (QPushButton &basebutton, QWidget * parent = 0) :
QPushButton (parent),
m_button (&basebutton)
{
QObject::connect(this, SIGNAL(clicked()), this, SLOT(forwardClick()));
//don't forget to forward other signals too
}
protected slots:
void forwardClick()
{
if (m_button)
{
m_button->click();
}
}
private:
QPushButton *m_button;
};
#endif // VIRTUALQPUSHBUTTON_H
file :: main.cpp
#include <QtGui/QApplication>
#include <QHBoxLayout>
#include "VirtualQPushButton.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
QPushButton *basebutton = new QPushButton (&w);
basebutton->hide();
QObject::connect (basebutton, SIGNAL (clicked()), &w, SLOT (close()));
VirtualQPushButton *buton1 = new VirtualQPushButton (*basebutton);
buton1->setText("Buton1");
VirtualQPushButton *buton2 = new VirtualQPushButton (*basebutton);
buton2->setText("Buton2");
QHBoxLayout *lyt = new QHBoxLayout();
lyt->addWidget(buton1);
lyt->addWidget(buton2);
w.setLayout(lyt);
w.show();
return a.exec();
}
Дайте мне знать, что вы думаете, спасибо за все ваши ответы.
CV