Qt--自定义控件

这篇具有很好参考价值的文章主要介绍了Qt--自定义控件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

Qt中提供了应用在各种场景的控件,使开发人员在实际工作中选择。但有些特定的场合中这些控件并不满足需要时,Qt允许使用自定义的控件。

例:我们在工作中有这样一种需求,点击按钮会根据一些其他状态来显示不同的图片,这时Qt提供的QPushButton就无法满足这种需求,这时我们就可以自定义一个继承自QPushButton的按钮类,在该类中重写按下的事件函数以实现根据其他状态显示不同图片的需求。

又或是,在一个项目中,频繁组合使用一些Qt提供的控件的组合(例SpinBox和HorizontalSlider),每次添加都需要添加维护两个控件。这时可以自定义一个控件类,在该类中管理维护SpinBox和HorizontalSlider两个控件,方便后续使用。

创建自定义控件

这里以 SpinBox和HorizontalSlider 组合的自定义控件为例,介绍常规的自定义控件的开发步骤。

假设这里有一个Widget项目,作为工作项目。右键项目 -》添加新文件, 选择Qt -》Qt设计器界面类:
qt自定义控件,QT,qt,ui,开发语言
选择自定义控件的父类:
qt自定义控件,QT,qt,ui,开发语言

输入自定义控件类的名称:
qt自定义控件,QT,qt,ui,开发语言

最后会给出添加的文件:
qt自定义控件,QT,qt,ui,开发语言

添加完成后可以看到.pro文件中自动添加了自定义类的.h .cpp以及ui文件,另外在界面文件中,也多了一个smallwidget.ui文件:
qt自定义控件,QT,qt,ui,开发语言

qt自定义控件,QT,qt,ui,开发语言

然后就可以在smallwidget.ui文件中设计我们的自定义控件了。

这里在smallwidget.ui中放了一个SpinBox和一个HorizontalSlider:
qt自定义控件,QT,qt,ui,开发语言

然后实现双向的连接:

SmallWidget::SmallWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SmallWidget)
{
    ui->setupUi(this);

    //连接
    connect(ui->spinBox, SIGNAL(valueChanged(int)), ui->horizontalSlider, SLOT(setValue(int)));

    connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->spinBox, SLOT(setValue(int)));
}

到这里,一个简单的自定义控件就设计完成了。

使用自定义控件

既然自定义控件设计完成了,如何在上面的Widget项目中使用呢?

这里在widget.ui中添加一个widget控件(因为我们的自定义控件的父类就是QWidget):
qt自定义控件,QT,qt,ui,开发语言

选中widget控件,右键 -》提升为:
qt自定义控件,QT,qt,ui,开发语言
然后在弹出的界面中输入要提升到的自定义控件的类名即可:
qt自定义控件,QT,qt,ui,开发语言
在该窗口中,若勾选全局包含,那后面再提升时,会显示已经被使用过的自定义控件类,方便后续使用。如窗口上方显示的SmallWidget类,这里点击选中,然后提升即可。

这样就使设置完成了,完成后虽然ui界面还是一个空的widget控件,但右边的类已经改变为SmallWidget了:
qt自定义控件,QT,qt,ui,开发语言
运行后查看效果:
qt自定义控件,QT,qt,ui,开发语言
可以看到确实是我们设计的自定义控件的效果。即使用一个控件类SmallWidget管理SpinBox和HorizontalSlider两个控件。

后续也可按需调整SpinBox和HorizontalSlider的样式,取值范围等。

总结

本文简单介绍了如何创建以及使用自定义控件,当Qt提供的控件不满足项目需求时,应该考虑使用自定义控件。文章来源地址https://www.toymoban.com/news/detail-599448.html

到了这里,关于Qt--自定义控件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Qt UI相关】Qt设置窗体或控件的背景色透明

    在Qt中, QPalette (调色板)类用于设置窗体或控件的外观颜色。首先,需要在代码中包含 QPalette 或 QGui 头文件。 然后,在构造函数中添加以下代码来设置窗体的透明度: 这里,我们使用 QPalette::Background 来设置窗体的背景色,并将其设置为全透明。 效果: 窗口整体透明,但

    2024年02月05日
    浏览(58)
  • Qt自定义控件 —— 颜色选择组合控件

             在开始阅读本文之前,如果您有学习创建Qt自定义控件并在其他项目中引用的需求,请参考: Linux系统下在Qt Creator中创建自定义控件并在其他项目中引用 https://blog.csdn.net/YMGogre/article/details/128920804 目录 1、应用场景: 2、所需资源: 3、界面布局: 3.1、各布局/控件

    2024年02月10日
    浏览(42)
  • Qt--自定义控件

    Qt中提供了应用在各种场景的控件,使开发人员在实际工作中选择。但有些特定的场合中这些控件并不满足需要时,Qt允许使用自定义的控件。 例:我们在工作中有这样一种需求,点击按钮会根据一些其他状态来显示不同的图片,这时Qt提供的QPushButton就无法满足这种需求,这

    2024年02月16日
    浏览(38)
  • qt自定义控件的封装

    刚学了一个很有意思的东西,前面学了list,Tree,Table三大控件和一部分常用基础控件,但感觉没啥意思,就是用别人的直接用,刚学了一个自定义控件的封装,流程如下:   想把两个不相关的组件封装在一块,直接用ui不行,所以先新添加了qt设计师页面,新添加了一个SmallWidget *ui 在smallw

    2024年01月23日
    浏览(37)
  • QT:自定义控件(Connect使用,子控件连接)

    1.举例:主页面为mainwindow,设置的子控件为Form 2.主界面 3.子控件中需要实现:QSpinBox移动 QSlider跟着移动,QSlider移动 QSpinBox数字跟着改变 还需要实现,在主界面中读取和设置子控件的数值: 子控件添加接口: 主界面通过按钮调用接口:

    2024年02月13日
    浏览(36)
  • Qt —— 自定义飞机仪表控件(附源码)

    示例效果   部署环境      本人亲测版本Vs2017+Qt5.12.4,其他版本应该也可使用。   源码1

    2024年01月25日
    浏览(41)
  • 【Qt】6.QTableWidget控件、其他控件、自定义控件封装、鼠标事件

    目录 QTableWidget控件 代码 widget.cpp 结果 其他控件 stackWidget栈控件 下拉框 代码 widget.cpp 结果 自定义控件封装 代码 smallwidget.h smallwidget.cpp widget.cpp 结果 鼠标事件 代码 mylabel.h mylabel.cpp 结果 设置列数setColumnCount 添加水平头setHorizontalHeaderLabels 设置行数setRowCount 设置正文setItem(行号

    2024年02月07日
    浏览(52)
  • Qt子线程控制主界面UI控件

    在子线程里控制主界面的UI控件有两种方法:第一种是在子线程中发送信号,然后在主线程中去更新;第二种方法是在子线程中创建同样的对象,然后把主界面中控件的指针赋给创建的对象。 第一种方法在此不做实例展示,在此通过一个简单的例子展示第二种方法: 下面是主

    2024年02月15日
    浏览(48)
  • Qt提升自定义控件,找不到头文件

    解决方案:去掉全局包含(只想解决问题的看到这应该就可以解决了,下面是原因分析) 原因分析:双击查看找不到的头文件,发现是includeSearchEdit.h,这里注意,include这种方式头文件不是从当前项目去查找头文件,而是从QT的include头文件去找,这当然找不到,所以我手动改为

    2024年02月12日
    浏览(43)
  • Qt自定义控件 —— 子控件与父控件的鼠标事件问题

    目录 0、引言: 1、问题描述: 2、解决方案: 3、解决后效果: 在 Qt自定义控件 —— 颜色选择组合控件 https://blog.csdn.net/YMGogre/article/details/128955257 一文中我们创建了自定义的组合控件,在该控件中包含了三个子控件 —— QGraphicsView 、 QLineEdit 和 QPushButton 。当我们通过 setIt

    2024年02月09日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包