找回密码
 立即注册

windows下和ubuntu下编译结果不同?!

发表于 6 天前 | 显示全部楼层 |阅读模式
1Qter豆
我用一个时钟定时读usb口设备。用到connect(&testtimer,testtimer.timeout,this,testtimerf);然后编译不过,但同样打语句在windows下就可以。我估计是编译器不同的原因。ubuntu是GCC,windows是MINGW32。这种情况怎麽处理?

最佳答案

查看完整内容

你的testtimerf 根本不是槽函数,你在windows下可以用?我感到很神奇
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
你的testtimerf 根本不是槽函数,你在windows下可以用?我感到很神奇
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
你是不是用了系统函数了?
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
Since 发表于 2018-6-12 19:18
你是不是用了系统函数了?

我就用了一个时钟类,定时而已。每次都是那个connect语句编译不过
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    testtimer.start(200);
    connect(&testtimer,testtimer.timeout,this,testtimerf);
}

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

int ii;
void MainWindow::testtimerf()
{
    ii++;
}
全部程序就是这么简单,学习使用定时器。
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QTimer>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
public:
    QTimer testtimer;
    static void testtimerf();

};

#endif // MAINWINDOW_H
这是头文件。也很简单。
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
静夜幕空 发表于 2018-6-13 11:42
你的testtimerf 根本不是槽函数,你在windows下可以用?我感到很神奇

新版本qt槽函数可以是任意的。你看连connects中连SLOT都不用了。
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
静夜幕空 发表于 2018-6-13 11:42
你的testtimerf 根本不是槽函数,你在windows下可以用?我感到很神奇

你说的对,GCC有更严格的要求,必须按照slot和signal的格式定义和书写,目前可以啦。主要是定义要加slots:然后    connect(&testtimer,SIGNAL(timeout()),this,SLOT(testtimerf()));必须是这种标准格式。我估计是GCC更严格的原因。
回复

使用道具 举报

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

本版积分规则

gz_zhmj

    主题

    帖子

    28

    积分

    Qter1级会员

    Rank: 1

    积分
    28

Qter1级会员

发私信

Qt开源社区——开源 共享 自由

微信扫一扫
查看精品教程!