有没有开源项目可以在QT4中构建可重用的图形用户界面组件,并将额外的连接信息保存在JSON文件中?Qt设计器允许您构建一个对话框,将信号和插槽连接在一起,并将结果保存为UI文件。我正在寻找一个项目,将扩展这一点,以建立组件,你可以很容易地插入到一个c++或pyside应用程序。一个例子就是为一个电影播放器构建一个包含所有开始、停止、后退、快进按钮的播放控件。然后,在应用程序中,您只需加载UI文件或JSON文件,其中包含用于回调的额外输入和输出。
发布于 2012-10-02 12:46:26
leeg,你谈论的JSON是相当广泛的。我不得不同意Stefan的观点,将您的自定义小部件建模为QWidget的子类是正确的方法。
可以说,您可以很容易地将这些类插入到任何Qt GUI应用程序中。在创建标准Qt GUI库中尚未出现的新GUI元素时,我经常使用此技术。您可以设置布局(垂直和水平),然后在小部件中嵌套小部件,以设计行为复杂的小部件。从那里,您可以创建自定义插槽和信号来处理不同的事件。
例如,您提到了电影播放器的播放器控件,该控件具有开始、停止、后退和快进按钮。您需要创建一个包含小部件,然后向包含小部件添加一个水平布局。然后,您可以添加用于开始、停止、后退和快进的按钮。如果您想要按钮的图像,可以在按钮本身上设置按钮图像。然后,您可以发出开始、停止、倒带和快进的信号。在调用对象中,您可以将插槽连接到每个相应的信号。
这个框架应该会帮助你入门:
#include <QtCore>
#include <QtGui>
class PlayerControl : public QWidget
{
Q_OBJECT
signals:
void start();
void stop();
void rewind();
void fastForward();
private slots:
void startClicked();
void stopClicked();
void rewindClicked();
void fastForwardClicked();
public:
PlayerControl(QWidget *parent);
~PlayerControl();
private:
QPushButton startButton;
QPushButton stopButton;
QPushButton rewindButton;
QPushButton fastForwardButton;
}
void PlayerControl::PlayerControl(QWidget *parent)
{
// do setup here
connect(startButton, SIGNAL(clicked()), this, SLOT(startClicked()));
connect(stopButton, SIGNAL(clicked()), this, SLOT(stopClicked()));
connect(rewindButton, SIGNAL(clicked()), this, SLOT(rewindClicked()));
connect(fastForwardButton, SIGNAL(clicked()), this, SLOT(fastForwardClicked()));
}
void PlayerControl::~PlayerControl()
{
// clean up
}
void PlayerControl::startClicked()
{
emit start();
}
void PlayerControl::stopClicked()
{
emit stop();
}
void PlayerControl::rewindClicked()
{
emit rewind();
}
void PlayerControl::fastForwardClicked()
{
emit fastForward();
}https://stackoverflow.com/questions/12625115
复制相似问题