1.封装spinbox和slider

1.1创建新的设计师类

包含了.cpp .h .ui
image.png

1.2 设计并添加到

先在子组件设计
image.png image.png
回到父组件
因为子组件的类型是Widget
所以我们拖拽一个Widget控件
然后右键提升为 输入子组件的类并添加(注意要保证添加的正确性)
如果在这里选择了全局包含
那么下次可以快速的选择该控件
image.png

1.3 代码添加

在子组件中设计逻辑
1.设计两个组件之间的信号和槽
2.父组件要使用,需要使用子组件提供的函数接口

  1. #include "smallwidget.h"
  2. #include "ui_smallwidget.h"
  3. SmallWidget::SmallWidget(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::SmallWidget)
  6. {
  7. ui->setupUi(this);
  8. //spinbox移动 QSlider跟着移动
  9. void (QSpinBox:: *spSignal)(int) = &QSpinBox::valueChanged;
  10. connect(ui->spinBox, spSignal, ui->horizontalSlider, &QSlider::setValue);
  11. //QSlider跟着移动 spinbox移动
  12. connect(ui->horizontalSlider, &QSlider::valueChanged, ui->spinBox, &QSpinBox::setValue);
  13. }
  14. //设置数字
  15. void SmallWidget::setNum(int num)
  16. {
  17. ui->spinBox->setValue(num);
  18. }
  19. //获取数字
  20. int SmallWidget::getNum(void)
  21. {
  22. return ui->spinBox->value();
  23. }
  24. SmallWidget::~SmallWidget()
  25. {
  26. delete ui;
  27. }

父组件调用

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. Widget::Widget(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::Widget)
  6. {
  7. ui->setupUi(this);
  8. //点击获取 获取控件当前的值
  9. connect(ui->pBtn_get, &QPushButton::clicked, [=](){
  10. qDebug() << ui->widget->getNum();
  11. });
  12. connect(ui->pBtn_set, &QPushButton::clicked, [=](){
  13. ui->widget->setNum(50);
  14. });
  15. }
  16. Widget::~Widget()
  17. {
  18. delete ui;
  19. }

image.png