关于QT一款好用的属性页控件QtnProperty的使用和扩展(一)——编译动态库

参考https://blog.csdn.net/weixin_34138521/article/details/92389552

git:https://github.com/lexxmark/QtnProperty

先说一下题外话,QT扩展库里面官方有提供一个QtPropertyBrowser,这个库小棋觉得提供的控件太少了,不是很好用。

  • 首先第一步是编译该第三方库的dll

How to build

 

Requirements:

  1. Qt 5.2 framework or later
  2. Flex 2.6.4 and Bison 3.1.1 (for Windows can be found here) if you build QtnPEG tool

注意到以上这一段话,如果不想麻烦,我们用不到PEG,建议不要去编译它了。

直接从Property.pro文件中删除并保存,从工程目录中拿掉这个模块。否则就要先安装QtnPEG依赖的Flex库(很是麻烦),除此以外,我们注意到Demo模块的pro文件和Tests模块的pro文件中也应用了PEG模块,他们的源文件中也大量使用了PEG Tool的内容,所以这两个模块,我们用不到也就不要了。

 

以上展示的是Master分支的内容,但是Master分支由于仅支持静态库,被小棋弃用了,约25MB静态库编译进程序,会导致执行文件体积膨胀。

注意到作者链接https://github.com/qtinuum/QtnProperty中还提供了另外一个2.00的分支如下,小棋使用的2.00的新版本。

另编译之前除了如上拿掉上述几个模块以外,还需要在如下位置配置qmake编译参数为动态库。

  1. QtnProperty library - property classes. By default it is a static library. If you need a dynamic library, you should run qmake with CONFIG+=qtnproperty_dynamic argument
  2. QtnPEG tool - optional executable to generate C++ code for property sets from simple QML like files (*.pef files)
  3. QtnPropertyTests - tests for QtnPropertyCore library
  4. QtnPropertyDemo - demo application

如下是该控件的部分demo图样:

     

 

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 在Qt中,可以使用QScrollArea来实现在QVBoxLayout内动态添加控件,并使其能够上下滑动而不是堆积在一。首先,创建一个QVBoxLayout对象,并将其设置为QScrollArea的垂直布局。 ```cpp QScrollArea* scrollArea = new QScrollArea; QWidget* scrollWidget = new QWidget; QVBoxLayout* layout = new QVBoxLayout(scrollWidget); scrollArea->setWidget(scrollWidget); scrollArea->setWidgetResizable(true); // 动态添加控件 for(int i = 0; i < 控件数量; i++){ QWidget* widget = new QWidget; layout->addWidget(widget); // 为控件设置内容和属性 } scrollArea->show(); ``` 首先,我们创建一个QScrollArea对象和一个QWidget对象(scrollWidget),后者将用作QScrollArea的子部件。然后,再在scrollWidget上创建一个QVBoxLayout对象(layout)作为其窗口布局。这样,我们就可以用这个垂直布局来添加我们想要的控件。 在动态添加控件时,我们创建一个QWidget对象(widget),并将其添加到垂直布局(layout)中。在这里,你可以为控件设置内容和属性。 最后,我们将scrollWidget设置为QScrollArea的窗口部件,使用setWidgetResizable(true)使其能够自动调整大小适应窗口,并调用show()将QScrollArea显示在屏幕上。这样,我们就可以通过滚动来查看添加的控件,并且控件不会堆积在一起。 ### 回答2: 在Qt中,可以使用QScrollArea来实现在Qt VerticalLayout内动态添加控件并实现上下滑动的效果,而不是堆积在一。 首先,我们需要在UI界面中添加一个QScrollArea,并将其垂直滚动条的策略设置为"AlwaysOn",确保垂直滚动条一直显示。然后,我们将QScrollArea的属性widgetResizable设置为true,以便自动调整内部widget的大小。 接下来,在垂直滚动区内创建一个QWidget,并使用QVBoxLayout作为其布局管理器。这个QWidget将作为QScrollArea的内部widget,所有动态添加的控件都将添加到这个QWidget中。 然后,我们可以按照需要动态创建所需的控件,并使用addWidget()方法将其添加到QVBoxLayout中。在添加完所有控件后,我们还可以使用QSpacerItem来创建一个占位符,以便在需要时调整布局。 最后,将这个QWidget设置为QScrollArea的widget,这样就可以通过滚动条来上下滑动动态添加的控件了。 具体实现代码如下: // 创建滚动区 QScrollArea *scrollArea = new QScrollArea(this); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollArea->setWidgetResizable(true); // 创建内部widget和布局管理器 QWidget *scrollWidget = new QWidget(scrollArea); QVBoxLayout *scrollLayout = new QVBoxLayout(scrollWidget); // 创建并添加动态的控件到布局中 for(int i=0; i<10; i++) { QLabel *label = new QLabel(QString("Label %1").arg(i+1)); scrollLayout->addWidget(label); } // 创建一个占位符 QSpacerItem *spacer = new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding); scrollLayout->addItem(spacer); // 设置滚动区的内部widget并显示 scrollArea->setWidget(scrollWidget); scrollArea->show(); 这样,我们就可以在Qt VerticalLayout内动态添加控件,并且通过滚动条来实现上下滑动的效果,避免了控件的堆积。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值