是否有任何开源项目在QT4中构建可重用的GUI组件,并在JSON文件中保存了额外的连接信息? Qt设计器允许您构建对话框并将信号和插槽连接在一起,并将结果保存为UI文件。我正在寻找一个可以扩展它的项目,以构建可以轻松插入到c ++或pyside应用程序中的组件。一个例子是为电影播放器构建一个playcontrol,其中包含所有开始,停止,倒带和快进按钮。然后在应用程序中,您只需加载UI文件或者可能是带有额外输入和输出的JSON文件以进行回调。
答案 0 :(得分:0)
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();
}