QT 自定义控件
发布日期:2021-06-30 10:27:12 浏览次数:2 分类:技术文章

本文共 1726 字,大约阅读时间需要 5 分钟。

自定义控件,首先创建一个设计文件

点击添加文件,选择 Q T QT QT,选择设计师界面即可

现在这个新建的叫 F o r m 1 Form1 Form1,通过 u i ui ui界面拖拽两个控件出来

然后如果要在主窗口使用这个组件,可以直接在 w i d g e t . u i widget.ui widget.ui里拖一个 w i d g e t widget widget出来

右键"提升为",然后输入对应的类名即可


下面来实现功能,就是 Q S p i n B o x QSpinBox QSpinBox改变时, Q S l i d e r QSlider QSlider随着移动

理论上来讲这么些就行了

connect(ui->spinBox,&QSpinBox::valueChanged,ui->horizontalSlider,&QSlider::setValue);

但是我们需要的 v a l u e C h a n g e d valueChanged valueChanged是带 i n t int int参数的,还有带 Q S t r i n g QString QString参数的重载

所以需要函数指针

void(QSpinBox::*one)(int)=&QSpinBox::valueChanged;    connect(ui->spinBox,one,ui->horizontalSlider,&QSlider::setValue);

同理设置当 Q S l i d e r QSlider QSlider改变时 Q S p i n B o x QSpinBox QSpinBox的变化

connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);

然后再实现两个功能,一个是 i n t   g e t n u m ( ) int\ getnum() int getnum(),返回当前 Q S p i n B o x QSpinBox QSpinBox的值

一个是 v o i d   s e t n u m ( i n t ) void\ setnum(int) void setnum(int),设置 Q S p i n B o x QSpinBox QSpinBox为某个值

那我们就直接去 F o r m 1 Form1 Form1里写接口即可

F o r m 1. h Form1.h Form1.h

public:    explicit Form1(QWidget *parent = nullptr);    ~Form1();    int getnum();    void setnum(int);

F o r m 1. c p p Form1.cpp Form1.cpp中实现功能

void Form1::setnum(int x){
ui->spinBox->setValue(x);}int Form1::getnum(){
return ui->spinBox->value();}

W i d g e t . c p p Widget.cpp Widget.cpp中使用这两个接口,因为 u i ui ui界面装组件的容器 W i d g e t Widget Widget提升为 F o r m 1 Form1 Form1了,可以直接使用接口

分别给两个按钮绑定上功能即可

connect(ui->btn_get,&QPushButton::clicked, [=]()    {
qDebug() << ui->widget->getnum(); } ); connect(ui->btn_set,&QPushButton::clicked,[=]() {
ui->widget->setnum(50); } );

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/112503158 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:E. Compatible Numbers(SoSdp入门)
下一篇:一分钟学会SOS DP,学不会来打我

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月29日 19时10分49秒