qt预备知识2

1.实现out输出流的实现。
 
QTextStream out(stdout);
  out << "Application's executable directory is "
        << AQP::applicationPathOf() << "\n";
       
2.创建命名空间:
  namespace AQP{
    class QStringList;创建类。
    创建成员函数,创建其他的函数,变量等等都可以!
  }
 
3.QString中变量"正则表达式"的应用。
   messageBox->setWindowTitle(QString("%1 - %2")
            .arg(QApplication::applicationName()).arg(title));
           
4.在应用中声明Button时,通常用系统已经有的就可以省去麻烦的事情。
    messageBox->addButton(QMessageBox::Save);
    messageBox->addButton(QMessageBox::Discard);
    messageBox->addButton(QMessageBox::Cancel);
    messageBox->setDefaultButton(QMessageBox::Save);
5.在QT中多用自己总结的算法,考验自己的数学运算能力。对一些常用的数学图形熟悉算法
  (例如:圆,正方形,三角形,菱形等)
  { return degrees * M_PI / 180.0; }
6.QString类中string类型的声明:构造函数。
QString ()
QString ( const QChar * unicode, int size )
QString ( const QChar * unicode )
QString ( QChar ch )
QString ( int size, QChar ch )
QString ( const QLatin1String & str )
QString ( const QString & other )
QString ( const char * str )
QString ( const QByteArray & ba )
6.(.h)文件中定义的成员变量,.cpp文件中怎么调用,main()函数中怎么调用,在成员函数中怎样调用
都有权限控制,和方法调用。槽连接很有可能是简单的设置,bool变量的真假!
7.指针,变量,用类定义的变量等等对象的应用都可以!
8.读写文件:打开,建立输入输出流,操作,关闭流,以什么样的方式读取。
    QRegExp whitespace("\\s+");
    QFile file(filename);
    if (file.open(QIODevice::ReadOnly|QIODevice::Text)) {
        QTextStream in(&file);
        while (!in.atEnd()) {
            QString line = in.readLine();
            QStringList parts = line.split(whitespace);
            if (parts.isEmpty())
                continue;
            QSet<QString> suffixes = QSet<QString>::fromList(
                    parts.mid(1));
            formatForMimeType[parts.at(0)].unite(suffixes);//数据单元
        }
    }
   
9
.判断文件是不是存在,文件存在则读取数据否则新建一个文件。   
 if (formatForMimeType.isEmpty()) {
        QString filename("/etc/mime.types");
        if (QFile::exists(filename))
            readMimeTypeData(filename);
        readMimeTypeData(":/mime.types");
    }
10.给messageBox添加按钮:
 messageBox->addButton(QMessageBox::Ok);
11.遍历StringList等等数据。 
    QStringList fileFormatList;
    foreach (const QByteArray &ba, formats)
        fileFormatList += ba;
    if (fileFormatList.isEmpty())
        fileFormatList << "*";
    else
        fileFormatList.sort();
    QString fileFormats = QString("%1 (*.").arg(name);
    fileFormats += fileFormatList.join(" *.") + ")";
    return fileFormats;
   
12.遍历集合:
    initializeFormatForMimeType();
    QSet<QString> formats;
    foreach (const QString &mimeType, mimeTypes)
        formats.unite(formatForMimeType.value(mimeType));
    if (mimeTypes.count() && mimeTypes.at(0).startsWith("audio/")) {
        // TWEAK: Supported audio formats that are not reported as such:
        formats.insert("wav");
    }
    return formats;

13.在main函数中初始化所有的应用程序为中文。
    QApplication app(argc,argv);
    QFont f("ZYSong18030",12);//可以设置字体为任意文本格式的数据""
    QApplication::setFont(f);
   
    QTranslator translator;   //定义翻译对象。
    translator.load("messagebox_zh");//加载文件,
    app.installTranslator(&translator);
14.各种布局文件的使用
  网格布局:   QGridLayout *grid = new QGridLayout;
              grid->addWidget(btn1,0,0);
                 layout->addWidget( label1, name, 0 ); 
                 layout->addWidget( nameLabel, name, 1 );
                 layout->addWidget( nameButton, name, 2 );
                 layout->setMargin(15);//设置边缘
                 layout->setSpacing(10);//设置间隔
                 setColumnMinimumWidth();//设置布局大小
             
     
  普通布局:  QVBoxLayout *mainLayout = new QVBoxLayout;
              mainLayout->setMargin(10);
              mainLayout->setSpacing(20);
              layout1->setAlignment(Qt::AlignHCenter); //设置成一条直线的显示
              layout1->addStretch(); //设置拉伸效果。
             
 
定义为制定的控件的Layout,这样就相当于在控件中添加子控件。    
    QVBoxLayout *layout1 = new QVBoxLayout(groupBox1);
    layout1->setMargin(10);
    layout1->setAlignment(Qt::AlignHCenter);   
    layout1->addWidget(toolButton1_1);
    layout1->addWidget(toolButton1_2);
    layout1->addWidget(toolButton1_3);
    layout1->addWidget(toolButton1_4);
    layout1->addWidget(toolButton1_5); 
    layout1->addStretch();
              
             
  设置布局完成以后调用主控件的
                    SetLayout();函数。设置UI文件的布局。
                   
15.简单的一个例子:dialog中遇到的switch语句简单举例。
    switch(QMessageBox::question(this,"Question",tr("It's end of document,search from begin?"),//抛出一个消息框带有两个button从而控制case语句
      QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok))
    {
    case QMessageBox::Ok:
     label->setText(" Question button / Ok ");//跟label实时连接。
     break;
    case QMessageBox::Cancel:
     label->setText(" Question button / Cancel ");
     break;
    default:
     break;
    }
    return;
16。一个简单的消息框information消息框。帮助,警告,关于。
       QMessageBox::information(this,"Information",tr("anything you want tell user"));
       return;
      
       QMessageBox::warning(this,"information about warning the Title","the content");
         
         QMessageBox::critical(this,"Critical",tr("tell user a critical error"));
         label->setText(" Critical MessageBox ");
         return; 
    得到的消息框带有图标。
   
 
17.  简单的Qmessage框可以这样弄就可以啦,复杂的消息框可以一项一项的赋值
 其中的数据项。
 
   QMessageBox customMsgBox;
    customMsgBox.setWindowTitle("Custom message box");
    QPushButton *lockButton = customMsgBox.addButton(tr("Lock"),QMessageBox::ActionRole);
    QPushButton *unlockButton = customMsgBox.addButton(tr("Unlock"),QMessageBox::ActionRole);
    QPushButton *cancelButton = customMsgBox.addButton(QMessageBox::Cancel);
    customMsgBox.setIconPixmap(QPixmap(":/images/linuxredhat.png"));
    customMsgBox.setText(tr("This is a custom message box"));
    customMsgBox.exec();
   
18.认识一下qt的项目文件.pro文件
TEMPLATE = app                               //应用程序名称。
TARGET =
DEPENDPATH += . release                       //版本信息release是正式版,
                                                debug是调试版。
INCLUDEPATH += .                                  
# Input
HEADERS += messagebox.h               //.h文件的引用。
SOURCES += main.cpp messagebox.cpp     //.cpp文件的加载
RESOURCES += messagebox.qrc         //资源的引用
TRANSLATIONS += messagebox_zh.ts     //语言的设置。
 19.注释部分:.pro中用 # 一般文件中用 // 或者 /*  */
 
 20。调用函数的时候可以利用Qt中封装的类得到自己需要的函数 调用方式:类名::函数
      bool  ok;    //变相的修改bool变量的值。多利用这样的方法。同时获取值,同时有改变了bool变量的应用。
      QString name = QInputDialog::getText(this,tr("User Name"),
       tr("Please input new name:"),QLineEdit::Normal,nameLabel->text(),&ok); 
 21.还有这样的例子
 
    bool ok;
    double d = QInputDialog::getDouble(this,tr("Stature"),
       tr("Please input stature:"),175.00,0,230.00,1,&ok); 
    if(ok)
     statureLabel->setText(QString(tr("%1")).arg(d));//利用变量的这种方式赋值

你可能感兴趣的:(qt预备知识2)