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

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

6
回复
8359
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2018-6-12 15:47:24 显示全部楼层 |阅读模式
1Qter豆
我用一个时钟定时读usb口设备。用到connect(&testtimer,testtimer.timeout,this,testtimerf);然后编译不过,但同样打语句在windows下就可以。我估计是编译器不同的原因。ubuntu是GCC,windows是MINGW32。这种情况怎麽处理?

最佳答案

查看完整内容

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

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-6-13 14:42:58 显示全部楼层
静夜幕空 发表于 2018-6-13 11:42
你的testtimerf 根本不是槽函数,你在windows下可以用?我感到很神奇

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

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-6-13 14:26:42 显示全部楼层
静夜幕空 发表于 2018-6-13 11:42
你的testtimerf 根本不是槽函数,你在windows下可以用?我感到很神奇

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

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-6-13 09:55:02 显示全部楼层
#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
这是头文件。也很简单。
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-6-13 09:53:36 显示全部楼层
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++;
}
全部程序就是这么简单,学习使用定时器。
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-6-12 19:18:56 显示全部楼层
你是不是用了系统函数了?
回复

使用道具 举报

累计签到:49 天
连续签到:1 天
2018-6-12 15:47:25 显示全部楼层
你的testtimerf 根本不是槽函数,你在windows下可以用?我感到很神奇
回复

使用道具 举报

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

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