您的位置:首页 > 编程语言 > Qt开发

QT5学习

2015-07-17 15:24 288 查看
一、hello,word 程序:

1、安装QT5.4.2 windows  新建项目——application——按引导建立工程文件

2、更改main.cpp中的内容,如下所示:

#include "mainwindow.h"

#include <QApplication>

#include<QLabel>


int main(int argc, char *argv[])

{

QApplication a(argc, argv);

/* MainWindow w;

w.show();*/

QLabel label("hello,world");

label.show();

return a.exec();

}


3、单击运行  不理解标签也有show函数。。。。要显示标签必须用show

二、信号与槽机制:

QT5中的函数原型:

信号的产生与接收对象都是指针形式,信号与槽函数信号槽要求信号和槽的参数一致,所谓一致,是参数类型一致。

1、自带的信号与槽机制  

#include "mainwindow.h"

#include <QApplication>

#include<QPushButton>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QPushButton button("quit");

QObject::connect(&button,
#include "mainwindow.h"
#include <QApplication>
#include<QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton button("quit");
QObject::connect(&button,&QPushButton::clicked,&QApplication::quit);
button.show();
return a.exec();
d0bc
}

button.show();


return a.exec();

}

为什么是QPushButton::clicked,&QApplication而不是button,与a呢,是调用类的成员函数还是对象的成员函数。。。。

2、自定义信号与槽机制

选择QT应用台控制程序,只包含一个main.cpp,无ui;并添加2个头文件

Newspaer.h文件

#include<QObject>

class Newspaper:public QObject

{

Q_OBJECT

public:

Newspaper(const QString &name):m_name(name)

{}

void send()

{

emit newsPaper(m_name);

}

signals:

void newsPaper(const QString &name);

private:

QString m_name;

};


reader.h文件

#include<QObject>

#include<QDebug>

class Reader:public QObject

{

public:

Reader()

{}

void receiveNewspaper(const QString &name)

{

qDebug()<<"Receive Newspaper:"<<name;

}

};


main.cpp文件

#include <QCoreApplication>

#include<newspaper.h>

#include<reader.h>


int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

Newspaper paper("newspaperA");

Reader reader;

QObject::connect(&paper,&Newspaper::newsPaper,&reader,&Reader::receiveNewspaper);

paper.send();

return a.exec();

}


这几段小代码,出了很多错误

  注意class类的写法,有;有公有以及私有  main.cpp得包含各头文件以及类命名的问题!!

三、mainwidow添加动作Action

mainwidow.h

#include <QMainWindow>


class MainWindow : public QMainWindow

{

Q_OBJECT


public:

MainWindow(QWidget *parent = 0);

~MainWindow();

private:

void open();

QAction *openAction;//槽函数为私有成员

};

mainwidow.cpp

#include "mainwindow.h"

#include <QApplication>

#include<QAction>

#include<QMenuBar>

#include<QMessageBox>

#include<QStatusBar>

#include<QToolBar>

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

{

setWindowTitle(tr("main window"));

openAction=new QAction(QIcon(":/images/test"),tr("&Open..."),this);//&表示下划线

openAction->setShortcuts(QKeySequence::Open);//快捷键

openAction->setStatusTip(tr("Open an existing file"));//鼠标滑过时,状态栏有显示信息

connect(openAction,&QAction::triggered,this,&MainWindow::open);//思考这个机制是否能够实现列表式的动作,每个动作打开一个新的窗口,从而实现不同的功能!

QMenu *file=menuBar()->addMenu(tr("&File"));

file->addAction(openAction);

QToolBar *toolbar=addToolBar(tr("&File"));

toolbar->addAction(openAction);

statusBar();//menuBar()、toolBar()和statusBar()菜单栏、工具栏和状态栏



}

MainWindow::~MainWindow()

{


}

void MainWindow::open()

{

QMessageBox::information(this,tr("Information"),tr("open"));

}

main.cpp

#include "mainwindow.h"

#include<QApplication>//记得添加QApplication类

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

MainWindow win;

win.show();

return a.exec();

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: