找回密码
 立即注册
收起左侧

doublespinbox和slider的转换怎么不行

2
回复
9526
查看
[复制链接]
累计签到:5 天
连续签到:1 天
来源: 2013-11-5 11:16:37 显示全部楼层 |阅读模式
2Qter豆
MainWindow::MainWindow(QWidget *parent) :   
QMainWindow(parent),   
ui(new Ui::MainWindow)
{   
  ui->setupUi(this);   
  connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(doublespinbox_slider()));  
  connect(ui->doubleSpinBox,SIGNAL(valueChanged(double)),this,SLOT(slider_doublespinbox()));
}
void MainWindow::doublespinbox_slider()
{   
  ui->doubleSpinBox->setValue((double)(ui->horizontalSlider->value())/100);
}
void MainWindow::slider_doublespinbox()
{  
  ui->horizontalSlider->setValue((int)(ui->doubleSpinBox->value()*100));
}
主要代码如上,结果是这样的:拖动slider的滑条doublespinbox上面有值变化(0.00-99.98),改变doublesipnbox上面的数字,滑条也有变化,但是按doublespinbox上面的加/减按钮,减的时候有时候减0.01,有时候减0.02,有时候减0.03,加的时候没反应,鼠标点击slider的两边,也是减无规律加没有。这是什么原因,求指导下。

最佳答案

查看完整内容

如果只是实验用,这个可以再仔细调试一下,看看到底是哪里的问题。 不过,这个好像是因为:spinbox修改值了,然后发送信号让slider修改值,而slider修改值以后又发送信号给spinbox让其修改值,它们形成了循环,而在其中还进行了数值类型的转换,所以出现了问题。 具体是那一步,为什么出现问题,还是需要自己仔细调试的! ...
回复

使用道具 举报

累计签到:1571 天
连续签到:1 天
2013-11-5 11:16:38 显示全部楼层
如果只是实验用,这个可以再仔细调试一下,看看到底是哪里的问题。

不过,这个好像是因为:spinbox修改值了,然后发送信号让slider修改值,而slider修改值以后又发送信号给spinbox让其修改值,它们形成了循环,而在其中还进行了数值类型的转换,所以出现了问题。

具体是那一步,为什么出现问题,还是需要自己仔细调试的!
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2013-11-5 16:48:15 显示全部楼层
恩,在数据转换中我把/100和*100放在括号外面,效果又不同。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了