我是Qt的新手,我正在寻找一种创建自己的组件的方法。我需要创建自己的自定义样式(需要具体查看)组件。问题是我正在查看教程,我对如何做到这一点感到有些困惑,因为教程显示的不是我需要做的事情。
我需要创建一些like my own plotwidget,其中包含两个图形(其中一个图形可通过鼠标单击并拖动控制点来编辑),这些图形将具有可访问的属性和插槽/事件,如" plotchanged"。
现在,我所寻找的并不是有人给我写代码(虽然会很好D:但是有人告诉我从哪里开始寻找/告诉我该怎么做?)
喜欢你需要
创建您自己的"自定义小部件" /" qml组件" /"您不知道的其他内容因为您是新的在Qt并且不知道名字或在哪里看"。
您还应该阅读一些有关此内容的内容,也许还有一些有用的内容。在这里,这是你应该看的。
自从我开始寻找以来,我开始了很多QML教程,但是当我开始学习时,我不确定它们是否会导致我最终寻找的东西。
我想要创建的是一个" Plot widget"它显示了两个图形,看起来接近它的图形可能是"曲线工具"比如在photoshop或GIMP中。
答案 0 :(得分:1)
这有点难以回答,因为您需要执行许多操作,例如在链接的图片中。所以我将解决两个主要问题:
只需创建一个继承自QWidget
的类并为其添加布局:
class CustomWidget : public QWidget
{
public:
CustomWidget ( QObject * parent ) : QWidget ( parent )
{
QVBoxLayout * lay = new QVBoxLayout;
lay->addWidget ( new QTextEdit );
lay->addWidget ( new QPushButton ( "Button" ) );
this->setLayout ( lay );
}
};
您可以在任何地方使用此类,例如通过布局的其他基于QWidget
的类,就像我使用new QLineEdit
一样,您可以在另一个类中使用new CustomWidget
。
还有许多其他Layouts
QPainter是您运行所有绘图的类(线,曲线等)。
您可以使用QWidget
绘制(或者确切地说:从QPaintDevice继承的类)。
要在适当时使用QWidget
,请覆盖paintEvent(QPaintEvent*)。只是谷歌,有数以百万计的例子如何正确地做到这一点。
答案 1 :(得分:1)
您想要创建一个小部件,因此首先要做的是创建一个继承自myWidget
的自己的类QWidget
。
然后,您需要2个图表。我建议你看看qwt library
:http://qwt.sourceforge.net/
使用此库,您可以获得大量图表示例。它有点复杂,它是一个非常大的lib但非常完整。
您还必须管理您的布局,我建议您使用QGridLayout
的Qt设计器。
使用此布局对象,您可以定义一个“矩阵”,您可以将所有小部件放在任何位置。
要制作按钮,窗口小部件,绘图,......点击它们时的操作,您必须创建signal/slot
机制。看看那里:http://qt-project.org/doc/qt-4.8/signalsandslots.html
最后,要拥有一个漂亮的小部件,您可以使用CSS language
创建一个样式表来改进您的设计。
答案 2 :(得分:0)
我认为一个好的开始就是阅读一下。 Qt是C ++应用程序的多平台框架。 http://en.wikipedia.org/wiki/Qt_(software)
QML是一种用于快速Qt UI开发的标记语言(如html,超文本标记语言)。 http://en.wikipedia.org/wiki/QML
使用QML,您可以设计图形界面。 " plotwidget"我们还不清楚您的应用需要什么数学。
我自己还没有对这个图书馆进行测试,但看起来很有希望 http://www.qcustomplot.com (这是谷歌搜索时的第一个热门" qt plot")我不知道你的意思是"拖动和点击控制点" ,如果支持,你必须阅读库文档。
我会:
1)通过继承QWidget创建一个小部件。使您选择的绘图库工作,并可能在继续之前显示一些模拟图,如y = x ^ 2或其他东西。
2)从库中记下您需要的呼叫和响应。如何拖动和点击"用你的图书馆解决了什么事?
3)使用QML或例如设计UI QtCreator中的普通UI功能,基于您在2)中派生的按钮和显示等的规范。