△ Qt学习笔记 - 信号与槽、自定义四则运算的槽代码的声明与定义、消息提示框…

首先对Qt进行简单的了解:

1、Qt 是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI(图形用户界面Graphical User Interface))程序,也可用于开发非GUI程序,比如控制台工具和服务器。

2、Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。

3、2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。

4、2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。

 

****************************************************************************************************************************************

 

信号与槽:

在我的理解下,信号与槽类似于C语言中的自定义函数与主函数自之间的关系,信号需要加载然后槽中的内容才能够被执行,在C语言中和自定义函数要在主函数中调用才可以使用。

使用:

QObject::connect(ui->computePushButton,SIGNAL(clicked()),this,SLOT(calSlot()));

分析:

1:QObject::                     (注意开头两个字母大写,后面添加两个冒号)

2:connect()                         信号与槽的连接函数,在括号内部放置参数

3:ui->自定义部件的名称       (例如记事本中的openAction,这里的大小写命名依照习惯)

4:SIGNAL(triggered())        这里的参数是指信号被触发的方式:

       clicked 一般指点击、按下

       triggered 一般是QAction等被触发

       activated 一般指控件被激活等(激活原因可以有很多)

5:this                                        this指针只能在一个类的成员函数中调用,它表示当前对象的地址

6:SLOT(自定义槽的名称)    这里的名称包含了括号,类似于C语言中的被调用的函数

 

 

自定义四则运算的槽的声明:

 

 

自定义四则运算的槽的定义:

void Widget::calSlot()
{
    this->setWindowTitle("Calculator - B");
    int first=ui->firstLineEdit->text().toInt();
    int second=ui->secondLineEdit->text().toInt();
    int result;
    if(ui->comboBox->currentIndex()==0)
    {
        result=first+second;
        ui->resultLineEdit->setText(QString::number(result));
        QMessageBox::information(this,"Result",QString::number(result));
    }
    if(ui->comboBox->currentIndex()==1)
    {
        result=first-second;
        ui->resultLineEdit->setText(QString::number(result));
        QMessageBox::information(this,"Result",QString::number(result));
    }
    if(ui->comboBox->currentIndex()==2)
    {
        result=first*second;
        ui->resultLineEdit->setText(QString::number(result));
        QMessageBox::information(this,"Result",QString::number(result));
    }
    if(ui->comboBox->currentIndex()==3)
    {
        if(second==0)
        {
            QMessageBox::warning(this,"Warning","The second is not allowed 0 !");
            return ;
        }
        result=first/second;
        ui->resultLineEdit->setText(QString::number(result));
        QMessageBox::information(this,"Result",QString::number(result));
    }

}

消息提示框:

  • 需要的库函数:#include <QMessageBox>
  • 使用方法  QMessageBox :: information ( this , "消息框的标题","消息框的内容");      //注意这里的information显示的是一种消息提示框: 
      
     
     
     
  • 上图用法说明:

    QMessageBox msgBox; //声明函数

    msgBox.setText("The document has been modified.");

    msgBox.setInformativeText("Do you want to save your changes?");

    msgBox.setStandardButtons(QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel);

    msgBox.setDefaultButton(QMessageBox::Cancel);   //默认选择按钮

    int ret = msgBox.exec();      //返回值,缺少该提示框无法运行
  • 用法在上面自定义代码中已经有使用到;

自定义窗口名称:

代码:

this->setWindowTitle("Calculator - A");

在不同的函数下面会有不同的显示效果,具体可参考上面代码进行分析;

在编译框(调试框)中输出信息,可用于调试:

  • 需要声明的库函数:#include <QtDebug>
  • 使用方法: qDebug()<<"需要显示的信息";  (注意大小写,q+Debug(调试))

****************************************************************************************************************************************

             最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。

****************************************************************************************************************************************

猜你喜欢

转载自blog.csdn.net/qq_42292831/article/details/81781032