是否有任何开源项目在QT4中构建可重用的GUI组件,并在JSON文件中保存额外的连接信息? Qt设计器允许您构建对话框并将信号和插槽连接在一起,并将结果保存为UI文件。我正在寻找一个扩展这个的项目来构建可以轻松插入到C++或pyside应用程序中的组件。一个例子是为所有的开始,停止,后退和快进按钮构建一个电影播放器的播放控制。然后,在应用程序中,您只需加载UI文件或JSON文件,并为回调提供额外的输入和输出。QT4开源项目构建可重用组件
回答
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();
}
感谢您的回复,但我所要求的更多的是关于这个部分>在调用对象中,您可以将插槽连接到每个相应的信号。 <我正在寻找一种像gui组件一样通过保存插槽和信号的连接来创建插件的方法。 – leeg
虽然你所说的在理论上是可行的,但完成需要花费很多时间和精力。您需要使用词法分析器并编写自己的解析器,或者使用像QJson这样的库并解析JSON。但是,您仍然需要想出一种方法来解释这些JSON文件,并根据JSON定义动态创建插槽/信号。从本质上讲,这种方法会带来很多开销。理论上可以完成,但我不会推荐它。 –
- 1. 构建android开源项目项目
- 2. 开源asp.net mvc项目的项目结构建议
- 3. 可怜的人来源控制压缩项目文件构建
- 4. 用maven构建可可项目
- 5. 开源项目
- 6. 开源项目项目
- 7. 开源项目库的结构
- 8. 那里的金字塔项目构建的开源项目是什么?
- 9. 项目中的资源组替换为资源目录,编码失败构建
- 10. 开源项目的免费构建服务器服务?
- 11. 如何构建astrid任务的开源项目
- 12. 在CMake项目组中构建目标
- 13. Qt4 OpenGL:QMPwidget构建错误
- 14. 小开源项目
- 15. 开源Ruby项目
- 16. 开源EDA项目
- 17. Delphi - 开源项目
- 18. F#开源项目
- 19. 开源XQuery项目
- 20. C++开源项目
- 21. asp.net开源项目
- 22. Android:开源项目
- 23. 为Android创建开源项目
- 24. 开始开源javascript项目
- 25. 开源Java项目随处可见
- 26. Qt4 QMenu项目排序
- 27. 硬件/软件清单开源项目
- 28. 创建一个可重用项目
- 29. 构建项目
- 30. 使用maven构建示例开源项目并使用TestNG进行测试
出了什么问题'QWidget'子? –