qt开发杂谈

1:qt中信号和槽有一种自动连接方式

void on_<widget name>_<signal name>(<signal parameters>);

如果槽的命名是这样的话:void on_<widget name>_<signal name>(<signal parameters>);

就会自动将widget name中的信号signal name和这个槽void on_<widget name>_<signal name>(<signal parameters>)链接起来。

例如:

void on_okButton_clicked();系统就会自动将okButton类中的信号clicked和on_okButton_clicked这个槽函数连接

当你触发okButton类的clicked时,这个槽函数就进行处理(注意这个button图标的object名字必须写成okButton,不是button图标显示的名字).


2:    main_widget=new mainWidget(this)

          main_widget=new mainWidget()

这两种申请方式的区别。

例如:

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

    connect(this,SIGNAL(goToWidget(int)),this,SLOT(runningWidget(int)));
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_mainPage_clicked()));
    connect(main_widget->ui->pushButton,SIGNAL(clicked()),this,SLOT(on_mainwindow_clicked()));
}

(1)main_widget=new mainWidget(this)申请表明你通过构造函数传递参数,你所用的对象就是你传递过来的对象,在他的基础上,添加main_widget所有的功能。

比如我已经在MainWindow-》setui构造函数中已经丰富了widget的窗口,如果我以这种方式申请,我就是在MainWindow-》setui-》widget的窗口的基础上,加我main_widget所定义的窗口成员。

(2)main_widget=new mainWidget()申请表明你会申请一个新的对象类,可能和你的this(MainWindow)有共同的继承类,但是它是在新对象上进行的操作,你的mainWidget是在你的新的对象类下添加它有的功能。

如果以new mainWidget()方式,我就不是在MainWindow-》setui-》widget的窗口的基础上,而是重新生成一个widget,在我生成的空白的widget之下,添加我main_widget所定义的窗口成员。

3: ui->setupUi(this);

 main_widget=new mainWidget(this);
    MainWindow::setCentralWidget(main_widget);
    main_widget->hide();

    ui->setupUi(this);

 main_widget=new mainWidget( );
    MainWindow::setCentralWidget(main_widget);
    main_widget->hide();

效果一样,就是重新设置了CentralWidget,把ui->setupUi中已经设置的CentralWidget,覆盖掉了。

ui->setupUi(this);

 main_widget=new mainWidget(this);
    main_widget->hide();

这种方式,使得把ui->setupUi(this)中设置的CentralWidget和通过构造main_widget类,把两个定义的widget窗口,都设为MainWindow中的CentralWidget。所以看到的效果是两个widget的重叠。如果这次想看到之中一个可以    main_widget->hide()另一个,同样想看到另一个可以show这个,hide另外一个

4:c++中一般对于有的函数参数在声明的时候,就给出默认值,这样,你可以在传实参的时候,可以不给这个参数传实参,它默认的就是你的默认值,也就不会出现编译错误。如果不是这样声明的话,就必须给函数传所有的实参,否则会提示编译问题。

5:信号和槽函数的定义,其函数参数一般要就一致(如果信号函数没有参数,一般要求相连的槽函数也不能有参数。如果信号函数是某个类型的,相连的槽函数也是相应类型的),否则编译时会提示接受者和发送者参数冲突。

例如   connect: Incompatible sender/receiver arguments

6:qt下写有关socket通讯方面程序,应包含#include <QtNetWork>

但是make时出现          error: QtNetwork: No such file or directory

具体操作步骤如下
(1): qmake -project
(2): 手工添加 QT += network
(3): qmake
(4): make

7:   QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

一种提供输出中文的方式,但是可能提供的字库不同,给codecForName提供的名字不同(UTF-8,gb2312等等)

所以有时开发过程中,会出现输出中文乱码,或者是输出小框。大多都是提供的字库与你的输入法不符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值