赞
踩
一个信号可以连接多个槽:connect(slider,SIGNAL(valuechanged(int)),spinBox,SLOT(setValue(int)))
多个信号连接同一个槽connect(lcd,SIGNAL(overflow(int))this,SLOT(handlMathError(int)))
一个信号可以与另外一个信号相连接connect(lineEdit,SIGNAL(textchanged(constQString&)),this,SLOT(updateRecord(constQString&)))
连接可以被移除disconnect(lcd,SIGNAL(overflow(int))this,SLOT(handlMathError(int)))
父子关系:
QWidget*parent
参数指定窗口的父子关系重要关系:
show
的时候会递归调用其所有子对象,让它们都显示出来。QTextStream
)和数据流(QDataStream
)的区别文件流 (QTextStream
)。操作轻量级数据(int
,double
,QString
)数据写入文本件中以后以文本的方式呈现。
数据流 (QDataStream
)。通过数据流可以操作各种数据类型,包括对象,存储到文件中数据为二进制。
文件流,数据流都可以操作磁盘文件,也可以操作内存数据。通过流对象可以将对象打包到内存,进行数据的传输。
FileDialog
ColorDialog
FontDialog
QHBoxLayout
QVBoxLayout
QGridLayout
int
类型的数据double
类型GraphicsView
框架结构主要包含了三个主要的类,分别是QGraphicsScene
QGraphicsView
QGraphicsItem
使用QTimer
对象开始计时的方法start()
设置QLabel
对象显示文本内容的方法是show()
MVC的含义MVC
模式中的M
代表Model
,V
代表View
、C
代表Controller
事件处理方法的有重载QApplication::notify()
、QObject::event()
、Qt基类事件处理函数。
窗口部件的父类包括 QWidget
、 Qframe
、QScrollView
定时器精度依赖于系统及硬件设计
槽是普通成员函数
Qt
支持的图像格式是:PNG
、BMP
、XPM
Q_OBJECT
是宏定义,如果类里面用到了signal
,必须要声明这个宏
FindDialog(QWidget*parent=0);
父参数为NULL
,说明没有父控件
槽可以是虚函数,可以是公有的,保护的,也可是私有的。
show()
显示的对话框是无模式对话框。用exec()
显示的对话框是模式对话框
当用户在窗口部件上放下一个对象时,就会调用dropEvent()
内部对字符集的处理采用UNICODE
标准
QT增加的特性有效的对象通信signal
和slot
、可查询和可设计的对象、事件及事件过滤器
Qt可在多个平台的应用程序中完全应用模板
类的构造函数被自动调用执行的情况是在定义该类的对象时
new运算符的描述一般有:使用运算符new创建对象时,会调用类的构造函数;运算符new
可以用来动态创建对象和对象数组;使用new
运算符创建的对象可以使用运算符delete删除
实现Qt多线程方式有:继承QThread
,实现多线程,继承QObject
,使用moveToThread
函数实现多线程,使用QThreadPool
,搭配QRunnable
QObject
对象树是一个静态的QObjectList
类对象object_trees
使用定时器,可以用QObject
类的定时器
Q_OBJECT
是宏定义,如果类里面用到了signal
,必须要声明这个宏
Qt
支持GIF
格式图像,但无法实现存储
Qt
中提供了QThread
线程类
Qt
的风格类的基类是QStyle
类
效果:
实现代码:
main.cpp
#include <QApplication>
#include<QWidget>
#include<QPushButton>
#include<QtGui>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *pWidget=new QWidget;
QPushButton *button=new QPushButton("Quit", pWidget) ;
QObject::connect(button, SIGNAL(clicked() ) , pWidget, SLOT(close() ) ) ;
pWidget->show();
return a.exec();
}
效果:
实现代码:
(假设UI的名字为gotocelldialog. Ui
)
main.cpp
include <QApplication>
#include <QDialog>
#include "ui_gotocelldialog. h"
int main(int argc, char *argv[] )
{
QApplication app(argc, argv) ;
Ui: : GotoCellDialog ui;
QDialog *dialog = new QDialog;
ui. setupUi(dialog) ;
dialog->show() ;
return app. exec() ;
}
需求:
编写一个字符串处理的类,MyString
,实现拷贝构造,‘=’
号重载等基本函数:
实现代码:
MyString.h
#include <iostream> class MyString { char *str; public: MyString(char *s) { str=new char [strlen(s)+1]; strcpy(this->str,s); } MyString(const MyString &temp) { str=new char[strlen(temp.str)+1]; strcpy(str,temp.str); } ~MyString() { delete str; } MyString & operator = (const MyString &temp) { delete[] this->str; this->str=new char[strlen(temp.str)+1]; if(this->str) { strcpy(this->str,temp.str); } return *this; } };
需求:
实现滑动组件(slider
)和旋转框(spinbox
)的用法
效果:
代码:
main.cpp
#include<QApplication> #include<QHBoxLayout> #include<QSpinBox> #include<QSlider> #include<QtGui> int main(int argc, char* argv[]) { QApplication app(argc, argv) ; //创建 app 的构造函数 QWidget *pWidget= new QWidget; //new 一个 Widget pWidget->setWindowTitle("enter your age") ; //设置 caption QSpinBox* spinbox = new QSpinBox; //new 一个 spinbox QSlider* slider = new QSlider(Qt:: Horizontal) ; //new 一个 slider spinbox->setRange(0, 130) ; //设置范围, ->符号 slider->setRange(0, 130) ; QObject:: connect(spinbox, SIGNAL(valueChanged(int) ) , slider, SLOT(se tValue(int) ) ) ; QObject:: connect(slider, SIGNAL(valueChanged(int) ) , spinbox, SLOT(se tValue(int) ) ) ; //信号和槽, (发送者, 信号, 接收者, 槽) . 第一个是 spinbox 发送给 slider 的 //第二个是 slider 发送给 spinbox 的 spinbox->setValue(23) ; //QHBoxLayout 是布局管理器, 即在水平方向上排列窗口部件 QHBoxLayout* layout = new QHBoxLayout; layout->addWidget(spinbox) ; layout->addWidget(slider) ; pWidget->setLayout(layout) ; pWidget->show() ; //窗体显示 return app. exec() ; }
效果:
mainwindow.cpp
:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFile> #include <QFileDialog> #include <QDebug> #include <QPushButton> #include <QTextStream> #include <QFileInfo> #include <QDateTime> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->pushButton,&QPushButton::clicked,[=](){ QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "C:\\data"); ui->label->setText(fileName); QFile file(fileName); file.open(QIODevice::ReadOnly); QByteArray array; while(!file.atEnd()) { array += file.readLine(); } ui->textEdit->setText(array); file.close(); }); } MainWindow::~MainWindow() { delete ui; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。