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));//利用变量的这种方式赋值