QT学习之路

QT学习之路

QtCreator与QT+VS2008之间的项目转化

1、首先在QTCreator中把项目建立好。

2、在VS2008+QT中建立相同名字的空项目。

3、找到VS2008+QT的workspace将QTcreator中的对应的项目替换vs2008+QT的文件(.ui、.cpp、.h、main.cpp)。

4、在VS2008中进行添加现有项。

5、点击xxx.ui,进行编译,会产生在release文件夹会产生ui_xxxxx.h文件,在点击整个项目的编译运行,在.h文件中,必须包含ui_xxxxx.h文件。由于Qtcreator没有ui_xxxxx.h文件,

6、如果发现无法找到信号与槽,那么在XXX.cpp中的 ui.setUi(this)下面,也就是构造函数中添加。QObject::connect(ui.pushButton_3, SIGNAL(clicked()), this,SLOT(setTimeOfDate()));类似的文件。

由于元对象和元对象编译器的作用,如果以on_pushButton_clicked()的形式,即on_信号_槽函数。那么就不需要进行信号与槽的关联了。

在VS2008+QT中需要新增加功能

1、在xxx.ui中增加相应的界面和槽

2、点击编译xxx.ui.

3、在xxxx.h文件中增加相应的

   private slots:

   void XXXXX();//增加定义的槽。

4、在XXX.cpp文件中增加槽功能

voidclassname::functionname();

如果没有按照严格的定义去书写槽函数,则必须在构造函数中进行关联

如:QObject::connect(ui.pushButton_3,SIGNAL(clicked()), this, SLOT(setTimeOfDate()));

 

QT中的文件形式

xxxx.ui文件:图形绘画文件,复杂的图可以在绘画的时候,就弄清楚信号与槽之间的关系,在进行编译。编译后形成ui_xxxx.h文件,里面有相关信号与槽之间的关联定义,也有相关的控件的定义。

xxxx.h文件主要是进行定义变量,由于ui_xxxxx.h文件中包含一群控件的变量,所以该文件必须包含#include “ui_xxxx.h”文件。以及SLOT与全局变量的定义。

xxxx.cpp:主要包括初始化界面,定义信号与槽的关联,对信号与槽的实现三个部分。

main.cpp:

字符串与int之间的转化

Stringto int

intfirst=ui->firstlineEdit->text().toInt();

intto String

ui->resultlineEdit->setText(QString::number(result));

在处理ComboBox、QlistWidget、QtableWidget、QtreeWidget的时候可以巧妙的时候他们的下标号进行判断,取代对其内容的取值。

如在进行加减乘除运算的代码中:if(ui->calWay->currentIndex()==0)代表取值为+号时

 

QmessageBox相关函数的使用

警告:QMessageBox::warning(this,"Error Message","出入的分母为"+QString::number(second));

信息:QMessageBox::information(this,"ErrorMessage","file save error");

 

设置固定的对话框

调用系统的一个进程:

点击sure按钮的时候,会触发产生一个开启LineEdit中所写的进程程序。

 

显示系统当前时间

 

设置颜色:

voidMainWindow::setColorSlot()

{

    QColor color;

    color =QColorDialog::getColor(Qt::red,this);

    if(color.isValid())

       ui->textEdit->setTextColor(color);

    else

    {

       QMessageBox::information(this,"Error Message","ErrorSelect");

    }

 

 

}

 

 

设置字体:

voidMainWindow::setFontSlot()

{

    /*

  bool ok;

  QFont font = QFontDialog::getFont(

                  &ok,QFont("Helvetica [Cronyx]", 10), this);

  if (ok) {

      // the user clicked OK and font is set tothe font the user selected

  } else {

      // the user canceled the dialog; font isset to the initial

      // value, in this case Helvetica[Cronyx], 10

  }

     */

bool ok;

QFont font=QFontDialog::getFont(&ok,QFont("Helvetica [Cronyx]", 10), this);

    if(ok)

    {

       ui->textEdit->setFont(font);

    }

    else

    {

       QMessageBox::information(this,"Error Message","ErrorSelect");

    }

 

}

 

文件的操作

打开一个文件:

void MainWindow::openFileSlot()

{

    saveFileName=QFileDialog::getOpenFileName(this,"OpenFile",QDir::currentPath());//saveFileName是一个在头文件定义过的全局变量

 

    //qDebug()<<"fileName is"+fileName;

    if(saveFileName.isEmpty())//如果点击打开了,但是没有选择文件,则什么都不干,出现一个提示信息

    {

       QMessageBox::information(this,"Error Meassage","Plzselect a file");//this表示窗口是与MainWindow相关联的

        return;

    }

    else

    {

        QFile *file=new QFile;

        file->setFileName(saveFileName);//设计文件名

        bool ok=file->open(QIODevice::ReadOnly);//只读的方式进行打开

        if(ok)//打开没有错

        {

            QTextStream in(file);//文本流和文件相关联

           ui->textEdit->setText(in.readAll());//将文件读取到textEdit

            file->close();   //读完后进行关闭

            delete file;     //释放 ui中的部件都是属于QGUI的,它内部会自动回收,但是file是属于界面之外的Qcore模块的不会自动回收

                             //图像界面的只是在delete ui中就可以ui全部释放所有的子类

        }

        else

        {

           QMessageBox::information(this,"Error Message","File openerror"+file->errorString());

            return;

        }

    }

}

 

新建一个文件:

voidMainWindow::newFileSlot(){

 

   if(ui->textEdit->document()->isModified())   //如果被编辑了

    {

        qDebug()<<"current filemodified";

    }

    else

    {

       // qDebug()<<"notmodified";

        ui->textEdit->clear();

       this->setWindowTitle("Untitle.txt......");

    }

}

 

另存为一个文件:

Qstring saveFileName=QFileDialog::getSaveFileName(this,"SaveFile",QDir::currentPath());//打开保存文件的框,把保存文件名获取
    if(saveFileName.isEmpty())//如果没有获得名字就取消了
    {
        QMessageBox::information(this,"Error Meassage","Plz wirte a name for your file");//this表示窗口是与MainWindow相关联的
        return;
    }
    QFile *file=new QFile;                        //需要使用文件的形式进行搬运信息
    file->setFileName(saveFileName);                  //在磁盘中的以什么名字存在 一种标志
    bool ok=file->open(QIODevice::WriteOnly);      //上述把信息以文件的搬运形式,fileName的标志放在磁盘,现在以只写的方式打开
    if(ok)
    {
        QTextStream out(file);                         //与文件进行关联
        out<<ui->textEdit->toPlainText();//转化成纯文本
        file->close();//file只是一个工具,从一个设备把IO流搬运到另一个设备后,已经到磁盘了,关掉流
        delete file;//释放引用
 
    }
    else
    {
        QMessageBox::information(this,"Error Message","File save error");
        return;
    }
}

保存一个文件

voidMainWindow::saveFileSlot()

 

{

    if(saveFileName.isEmpty())        //文件名为空的时候说明这个文件原先不存在,所以保存的时候和另存为是相同操作,当然如果打开过,那么文件绝对有名字,saveFileName是在头文件中定义过的一个全局变量。

        this->saveAsFileSlot();

    else

    {

        QFile *file=new QFile;

        file->setFileName(saveFileName);

        bool ok=file->open(QIODevice::WriteOnly);

        if(ok)

        {

            QTextStream out(file);

           out<<ui->textEdit->toPlainText();

            file->close();

            delete file;

        }

        else

        {

           QMessageBox::information(this,"Error Message","file saveerror");

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值