首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

自定义信号和槽的有关问题

2013-07-16 
自定义信号和槽的问题void Widget::vvvChanged(){if(a!spin-value()){aspin-value()+100emit setV(a)

自定义信号和槽的问题

void Widget::vvvChanged()
{
    if(a!=spin->value())
    {
        a=spin->value()+100;
        emit setV(a);
    }
}

void Widget::setV(int a)
{
    if(a!=spin->value())
    {
        spin->setValue(a);
    }
}
  
有一个slider 和一个spinbox 但他们范围不相等 程线性关系 我想自己定义信号和槽 来实现他们的联系 比如他们的关系是 a=b+100;如何定义信号和槽 我这个定义哪里不对吗 初学 大神勿喷
[解决办法]
引用:
Quote: 引用:

信号函数是不需要实现的
setV(int a);是信号函数还是槽函数?


信号函数不需要实现?可以具体解释一下吗 setV是槽函数

信号函数只要定义了就可以。
比如在你的头文件有这样的一个信号函数:
signals:
   void sendData(int iValue);
然后你有一个这样的槽函数:
private slots:
   void setV(int iValue);

那么你在任何地方都可以直接发送这样的信号:
   emit sendData(x);    //x是一个整型数

通过连接:connect(this, SIGNAL(sendData(int)), this, SLOT(setV(int)));

你的槽函数:
void XXX::setV(int iValue)
{
   qDebug()<<iVlaue<<endl;  //这边的iValue就是你信号那么传过来的值,即x
}
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

信号函数是不需要实现的
setV(int a);是信号函数还是槽函数?


信号函数不需要实现?可以具体解释一下吗 setV是槽函数

信号函数只要定义了就可以。
比如在你的头文件有这样的一个信号函数:
signals:
   void sendData(int iValue);
然后你有一个这样的槽函数:
private slots:
   void setV(int iValue);

那么你在任何地方都可以直接发送这样的信号:
   emit sendData(x);    //x是一个整型数



通过连接:connect(this, SIGNAL(sendData(int)), this, SLOT(setV(int)));

你的槽函数:
void XXX::setV(int iValue)
{
   qDebug()<<iVlaue<<endl;  //这边的iValue就是你信号那么传过来的值,即x
}




#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()
{

}



我这个哪里不对吗 怎么还是不对


你要什么效果?我写一个Demo给你好了。



一个spinbox  一个slider  一个范围是100~200 一个范围是200~300 想自己写信号和槽 来实现他俩的连接  

你无视了4楼么 我觉得4楼说的很明白了。
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(setsliderValue(int)));
    connect(slider,SIGNAL(valueChanged(int)),spin,SLOT(setspinValue(int)));
    box=new QVBoxLayout;
    box->addWidget(o);
    box->addWidget(slider);
    box->addWidget(spin);
    setLayout(box);
    setWindowTitle("hello");
}
void Widget::setsliderValue(int a)
{
    spin->setValue(a+100);
}
void Widget::setspinValue(int a)
{
    spin->setValue(a-100);
}
 
Widget::~Widget()
{
 
}

热点排行