• 5445阅读
  • 5回复

[提问]如何动态改变spinBox的SingleStep的值啊? [复制链接]

上一主题 下一主题
离线zjun726
 
只看楼主 倒序阅读 楼主  发表于: 2013-05-15
关键词: spinBox
我现在想做一个界面,在界面中通过选择1ms,10ms,100ms,1000ms,来改变spinBox的singleStep的值。


我的想法是用4个RadioButton,分别表示1ms,10ms,100ms,1000ms,当选中其中一个button时,利用信号和槽给出信号,改变singleStep的值。


代码如下,只是一个很简单的测试用的代码,可是发现完全不起作用啊,spinBox的step仍然是我设置的初始值2。
我也做过测试,就是把槽修改为如果radioButton2被选中,关闭窗口,这个测试是对的,选中radioButton2时窗口关闭了,说明radionButton2的信号时给出去了,那为什么spinBox的step没有改变呢?

麻烦哪位大侠帮我看看代码?谢谢



#include "smartdelaywidget.h"
#include "ui_smartdelaywidget.h"


SmartDelayWidget::SmartDelayWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SmartDelayWidget)
{
    ui->setupUi(this);
    
    connect(ui->radioButton_2, SIGNAL(clicked()), ui->spinBox_1, SLOT(spinBox1_step_change()));
}


SmartDelayWidget::~SmartDelayWidget()
{
    delete ui;
}


void SmartDelayWidget::spinBox1_step_change()
{
    ui->spinBox_1->setSingleStep(10);
}
离线alexltr

只看该作者 1楼 发表于: 2013-05-16
connect的第三個參數不對
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线dbzhang800

只看该作者 2楼 发表于: 2013-05-16
恩,其实这种问题,通过检查connect的返回值,或者注意看程序运行时的控制台输出,都容易避免
离线zjun726
只看该作者 3楼 发表于: 2013-05-16
回 1楼(alexltr) 的帖子
谢谢楼上,昨晚最后试着把第3个参数改为了this,发现就可以了。

不过没想明白,为什么要用this啊,接收信号的是spinBox啊?
离线dbzhang800

只看该作者 4楼 发表于: 2013-05-16
Re:回 1楼(alexltr) 的帖子
引用第3楼zjun726于2013-05-16 09:14发表的 回 1楼(alexltr) 的帖子 :
谢谢楼上,昨晚最后试着把第3个参数改为了this,发现就可以了。
不过没想明白,为什么要用this啊,接收信号的是spinBox啊?

类比一下,老板给你打电话,让你把公司窗子关掉。请问:接电话的是你还是窗子?
离线jdwx

只看该作者 5楼 发表于: 2013-05-16
回 3楼(zjun726) 的帖子
void SmartDelayWidget::spinBox1_step_change()
这个是connect的槽,不是在QSpinBox类里,而是在SmartDelayWidget类里,不就是写connect代码的这个类吗?
当然要写this。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个