• 8993阅读
  • 10回复

QTimer定时时间怎么动态设定啊?【已解决】 [复制链接]

上一主题 下一主题
离线songfangfang
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-07
现在在做一个定时器,想动态的设定定时器的定时时间,比如用控件combobox来选择定时器start的定时时间参数

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QTimer *time = new QTimer(this);
    connect(time,SIGNAL(timeout()),this,SLOT(Atuo_Send_Data()));                         //定时发送函数
    time->start(100);    
}

但是在别的成员函数里却不能使用time,错误提示说没有定义,只能在MainWindow里使用,我如果在别的成员函数里定义time类,在ainWindow就
不能用connect定义信号和槽的关系,有哪位大哥知道啊??
谢谢拉~~
[ 此帖被午小夜在2010-04-08 00:37重新编辑 ]
离线blesser
只看该作者 1楼 发表于: 2010-04-07
头文件中定义
构造函数初始化一下就可以了
离线浪漫天使
只看该作者 2楼 发表于: 2010-04-07
QTimer *time 做类的成员变量 而不是临时变量
改变定时时间用setInterval
然后重新start
离线benbenmajia

只看该作者 3楼 发表于: 2010-04-07
你取到combobox的text转换类型赋值过去,可以通过检查combobox的text是否变化判断进行下一步,只是一个想法
安然.....
离线午小夜

只看该作者 4楼 发表于: 2010-04-08
引用第3楼benbenmajia于2010-04-07 17:20发表的  :
你取到combobox的text转换类型赋值过去,可以通过检查combobox的text是否变化判断进行下一步,只是一个想法


a truely worthy idea.
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线songfangfang
只看该作者 5楼 发表于: 2010-04-08
回 2楼(浪漫天使) 的帖子
我是这样想的,但是在别的成员函数中不能用time->start();,只能在MainWindow中使用,
我现在就是想取到控件combobox的值,然后修改定时器的时间
void MainWindow::Autoo_Send_Data()
{
           time->setInterval(1000);               //此句出错,说没有time成员
    if(ui->Loop_Send->checkState()==2)                                //自动发送数据
    {
        MainWindow::Send_Data();                                      //自动发送数据
    }

}
我就想定义一个QTimer的成员,在其他的成员函数中都能用到这个成员函数,不知道怎么解决啊?
离线songfangfang
只看该作者 6楼 发表于: 2010-04-08
回 3楼(benbenmajia) 的帖子
恩,是这个思路,但是在控件combobox中不能用QTimer的成员函数啊,说没有定义,现在就是要解决这个问题,呵呵
离线songfangfang
只看该作者 7楼 发表于: 2010-04-08
回 1楼(blesser) 的帖子
我是用下面这种方法做的
在头文件中自己定义了一个新的类,如下:
class myTimer:public QTimer
{
    public:
    void mysetInterval(unsigned long msecs)
    {
        QTimer::setInterval(msecs);
    }
};
然后在MainWindow中调用,如下:myTimer::mysetInterval(10);
可是有如下错误:
E:/qtwork/usb/mainwindow.cpp:146: error: cannot call member function 'void myTimer::mysetInterval(long unsigned int)' without object
离线yangfanxing
只看该作者 8楼 发表于: 2010-04-08
QTimer还在mainwindow继承类里进行;
combobox发送currentIndexChanged(int)信号,只要吧信号返回到QTimer定义处就可(用全局等)。
还可以把QTimer restart()
PHPWind好恶心。。。不想看这种界面。。。
离线songfangfang
只看该作者 9楼 发表于: 2010-04-08
回 1楼(blesser) 的帖子
恩,按照你的方法成功解决了,呵呵,谢谢你啊,我在头文件做的类是不行的,就算编译通过,此time非彼time
同时谢谢其他几位大哥的帮助~~~
离线songfangfang
只看该作者 10楼 发表于: 2010-04-08
回 8楼(yangfanxing) 的帖子
呵呵,恩,也行的,我现在在头文件里声明了QTimer的一个成员,然后在构造函数了初始化了以下,现在行了,谢谢你的回复啊~~~
快速回复
限100 字节
 
上一个 下一个