QT只能写c++程序吗?写c语言只能用gtk吗?

QT只能写c++程序吗?写c语言只能用gtk吗?,第1张

qt使用的是gcc的编译器,准确的说,是g++编译器。\x0d\x0a使用qt是可以写C语言程序的,搜轿磨因为g++编译器,或世斗者说所有的C++编译器,均可以兼容大部分的C语言程序,只在关键字和void*指针转换上略有区别。\x0d\x0a不过,qt的强大在于其C++界面,所以用qt来写C程序,并不是好的选择。\x0d\x0a总结就是,能用,但帆弯是不好用。

qt几?用gcc编译。不过要用qt的工具先生成Makefile文件。一般基中是qt里自带的qmake工具。首先先写好cpp和头文件,在当前目录下团滚依次执行qmake -project,qmake,塌锋余make即可编译。

/********MyButton.h*********/

#ifndef MYBUTTON_H_

#define MYBUTTON_H_

#include<iostream>

#include <QtGui/QPushButton>

#include <QtGui/QWidget>

class MyButton : public QPushButton

{

Q_OBJECT

public:

MyButton(const QString &text, QWidget * parent)

~MyButton()

public:

void setLed(int argc, char *argv[])

public slots:

void sendButtonText()

private:

signals:

void isClickButton(const QString &text)

}

#endif

[cpp] view plain copy

/**********MyButton.cpp************/

#include "MyButton.h"

extern "C"{

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>物纯

#include <sys/ioctl.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

void MyButton::setLed(int argc, char *argv[]){

int on

int led_number

int fd

if (argc != 3 || sscanf(argv[1], "%d", &led_number) != 1 || sscanf(argv[2],"%d", &on) != 1 ||

on <0 || on >1 || led_number <0 || led_number >罩者咐 3) {

fprintf(stderr, "Usage:\n")

fprintf(stderr, "\t led led_number on|off\n"嫌手)

fprintf(stderr, "Options:\n")

fprintf(stderr, "\t led_number from 0 to 3\n")

fprintf(stderr, "\t on 1off 0\n")

exit(1)

}

fd = open("/dev/led", 0)

if (fd <0) {

perror("open device /dev/led")

exit(1)

}

ioctl(fd, on, led_number)

::close(fd) //请注意,此处如果要调用C语言库中的close()一定要加上“::",否则程序将到当前类的作用域中寻找close()方法,导致不明错误。

}

}

MyButton::MyButton(const QString &text,QWidget *widget)

:QPushButton(text,widget)

{

connect(this,SIGNAL(clicked()),this,SLOT(sendButtonText()))

}

MyButton::~MyButton()

{

}

void MyButton::sendButtonText(){

emit isClickButton(this->text())

char open_1[]="1"

char open_2[]="1"

char open_3[]="1"

char *o1=open_1

char *o2=open_2

char *o3=open_3

char close_1[]="1"

char close_2[]="1"

char close_3[]="0"

char *c1=close_1

char *c2=close_2

char *c3=close_3

char *open[]={o1,o2,o3}

char *close[]={c1,c2,c3}

QString *str=new QString(this->text())

if((str->compare("mb1"))==0){

std::cout<<"mb1 is clicked!\n"

setLed(3,open)

}

if((str->compare("mb2"))==0){

std::cout<<"mb2 is clicked!\n"

setLed(3,close)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12338410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存