Qt 中定义的槽出现问题 求改正

#include"widget.h"Widget::Widget(QWidget*parent):QWidget(parent){slider=newQSlider(Qt... #include "widget.h"
Widget::Widget(QWidget *parent)

: QWidget(parent)
{

slider=new QSlider(Qt::Horizontal);

spin=new QSpinBox;

spin->setRange(100,200);

slider->setRange(200,300);

connect(spin,SIGNAL(valueChanged(int)),slider,SLOT(setValue(int)));

connect(slider,SIGNAL(valueChanged(int)),spin,SLOT(setV(int)));

box=new QVBoxLayout;

box->addWidget(o);

box->addWidget(slider);

box->addWidget(spin);

setLayout(box);

setWindowTitle("hello");
}
void Widget::setV(int a)
{

spin->setValue(a-100);

emit vvvChanged(a);
}

Widget::~Widget()
{

}

一个slider 和spinbox 但是数值范围不一样 想程集合关系变化 a=b+100; 怎么定义信号和槽才能实现 我那个setV是槽函数 哪里错了 求改正 并且附上一份正确的信号和槽函数
展开
 我来答
cooke1234
2013-07-03 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3544万
展开全部
第一步:
connect(spin,SIGNAL(valueChanged(int)),slider,SLOT(setSliderValue(int)));
connect(slider,SIGNAL(valueChanged(int)),spin,SLOT(setSpinValue(int)));
第二步: (自己补充槽声明)
void Widget::setSliderValue(int nSpinValue)
{
if (slider->value() != (nSpinValue+100))
slider->setValue(nSpinValue+100);
}

void Widget::setSpinValue(int nSliderValue)
{
if (spin->value() != (nSliderValue-100))
spin->setValue(nSliderValue-100);
}
追问
还是不对啊...
追答
抱歉,上面写错了,
connect(spin,SIGNAL(valueChanged(int)),slider,SLOT(setSliderValue(int)));
connect(slider,SIGNAL(valueChanged(int)),spin,SLOT(setSpinValue(int)));
改成:(第三个参数改为this)
connect(spin,SIGNAL(valueChanged(int)),this,SLOT(setSliderValue(int)));
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(setSpinValue(int)));
Joshion2008
2013-07-03 · TA获得超过152个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:130万
展开全部
你的Widget是不是继承自QWidget(),看起来应该是的,你最好在.h文件里加如Q_OBJECT宏,不然你连接不上信号和槽
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式