0
点赞
收藏
分享

微信扫一扫

qt (1) —— 入门



环境:
Qt Creator 2.8.1
Qt 5.1.1
gcc 4.9.1

我的第一份qt程序

hello wolrd
控制台应用程序

#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<"hello world";
return

初识信号槽

建立GUI应用程序,在MainWindow中加入pushbutton,然后使用design进行设计,选择工具edit signals/slots, ,点击pushbutton,在configure connection中选上”show signals and slots inherited from Qwidget”, QPushButton中选择相应的事件,右侧mainwindow选择相应的事件,比如click() – close().

qt (1) —— 入门_qt


再次运行,单击button,窗口自动关闭。

认识基本的窗口

qt (1) —— 入门_qt_02


MainWindow对应QMainWindow

menuBar对应QMenuBar,它的下级是menuWindow,子项是actionWindow。

每一个Object都由一个Class对应。

右击pro图标可以增添新的ui,且对应的.h,.cpp等文件会自动加入文件路径。

右下角的窗体是对象的属性列表。

简单UI程序

设计产生100以内整数的随机数生成器,点击button即可在text中生成一个随机数字。

分析:

在MainWindow中加入textEdit、pushButton。当我们点击pushButton时,slot作出反应,使用srandom()

, rand()生成100的随机整数。

qt (1) —— 入门_应用_03


关键代码:

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <time.h>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_random_clicked()
{
srandom(time(0));
int result = (int)((double)rand()/RAND_MAX*100+0.5);
QString str= QString::number(result,10);
ui->textEdit->setText(str);
ui->textEdit->setAlignment(Qt::AlignHCenter);
}

使用空项目创建hello world的窗口程序。

当选择使用空项目进行创建程序后,我们发现整个文件夹只有cpp资源文件和pro配置文件。
初步设想是使用label显示“hello world”,并把label放在QApplication中。
使用帮助我们找到ALable和QApplication,他们的头文件都在/home/edemon/Qt5.1.1/5.1.1/gcc/include/QtWidgets路径下,那么include

SOURCES += \
main.cpp
QT

main.cpp:

#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>

int main(int argc,char *argv[]){
QApplication app(argc,argv);
QLabel *label = new QLabel("hello world.");
label->show();
label->setFixedSize(200,60);
return

执行:

qt (1) —— 入门_应用_04


如果不想在头文件书写路径时那么麻烦,可以在pro配置文件中加上​​QT += core gui declarative​​.

在qt creator中查找帮助

qt (1) —— 入门_qt_05

grid布局

空项目练习。
pro:

SOURCES += \
main.cpp

QT

main.cpp:

#include <QApplication>
#include <QtGui>
#include <QtCore>
#include <QLabel>
#include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>

int main(int argc,char *argv[]){
QApplication app(argc,argv);
QWidget *window = new QWidget();
window->setWindowTitle("hello");
QGridLayout *layout = new QGridLayout();

QLabel *label1=new QLabel("name:");
QLineEdit *txt1=new QLineEdit();
QLabel *label2=new QLabel("name:");
QLineEdit *txt2=new QLineEdit();

layout->addWidget(label1,0,0);
layout->addWidget(txt1,0,1);
layout->addWidget(label2,1,0);
layout->addWidget(txt2,1,1);

QPushButton *qbutton = new QPushButton("ok");
layout->addWidget(qbutton,2,0);
window->setLayout(layout);
window->show();
return

qt (1) —— 入门_#include_06

拉伸窗口:

qt (1) —— 入门_应用_07

竖直布局

空项目练习。
main.cpp

#include <QApplication>
#include <QtGui>
#include <QtCore>
#include <QLabel>
#include <QGridLayout>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLineEdit>
#include <QPushButton>

int main(int argc,char *argv[]){
QApplication app(argc,argv);
QWidget *window = new QWidget();
window->setWindowTitle("hello");
//QGridLayout *layout = new QGridLayout();
QVBoxLayout *layout = new QVBoxLayout();
//QGridLayout *layout = new QGridLayout();
QLabel *label1=new QLabel("name:");
QLineEdit *txt1=new QLineEdit();
QLabel *label2=new QLabel("name:");
QLineEdit *txt2=new QLineEdit();

layout->addWidget(label1,0);
layout->addWidget(txt1,0);
layout->addWidget(label2,1);
layout->addWidget(txt2,1);

QPushButton *qbutton = new QPushButton("ok");
layout->addWidget(qbutton,2,0);
window->setLayout(layout);
window->show();
return

qt (1) —— 入门_头文件_08

水平布局

空项目练习。
main.cpp

#include <QApplication>
#include <QtGui>
#include <QtCore>
#include <QLabel>
#include <QGridLayout>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLineEdit>
#include <QPushButton>

int main(int argc,char *argv[]){
QApplication app(argc,argv);
QWidget *window = new QWidget();
window->setWindowTitle("hello");
//QGridLayout *layout = new QGridLayout();
//QVBoxLayout *layout = new QVBoxLayout();
QHBoxLayout *layout = new QHBoxLayout();
QLabel *label1=new QLabel("name:");
QLineEdit *txt1=new QLineEdit();
QLabel *label2=new QLabel("name:");
QLineEdit *txt2=new QLineEdit();

layout->addWidget(label1);
layout->addWidget(txt1);
layout->addWidget(label2);
layout->addWidget(txt2);

QPushButton *qbutton = new QPushButton("ok");
layout->addWidget(qbutton);
window->setLayout(layout);
window->show();
return

qt (1) —— 入门_头文件_09

spliter

Qt GUI Application
spliter水平或spliter竖直布局都可以拉动部件之间中间的分割线,使得图形变换。

qt (1) —— 入门_qt_10


qt (1) —— 入门_#include_11

QDir

空项目练习。
QDir可以实现很多路径操作,比如常用的’ls ‘, ‘mkdir’等。
main.cpp

#include <QCoreApplication>
#include <QDebug>
#include <QDir>
#include <QFileInfo>
#include <QString>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
/* find special path. */
QDir dir("/home/edemon/workspace");
qDebug()<<"worksapce: "<<dir.exists();
/* Returns a list of the root directories on this system. */
foreach (QFileInfo item,dir.drives()){
qDebug()<<item.absoluteFilePath();
}
QString path = "/home/edemon/workspace/qt_dir";
if(!dir.exists(path)){
dir.mkdir(path);
}
else qDebug()<<"here is already qt_dir path";

/* item.absolutePath(): /home/edemon/workspace/ */
foreach (QFileInfo item, dir.entryInfoList()){
if(item.isDir()) qDebug()<< "dir: "<<item.absoluteFilePath();
if(item.isFile()) qDebug()<< "file: "<<item.absoluteFilePath();
}

return

QStyle改变窗体风格

Qt Gui Applicatuion.
main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setStyle("macintosh");
MainWindow w;
w.show();

return a.exec();
}
/*
QStyle * QApplication::setStyle(const QString & style) [static]
The string must be one of the QStyleFactory::keys(),
typically one of "windows", "fusion", "windowsxp", or "macintosh".
Style names are case insensitive.
*/


举报

相关推荐

0 条评论