Qt控件简要笔记

信号:
1、普通函数,不需要声明,使用signals关键字声明,只用函数声明
2、可以自定义信号
3、没有返回值,void类型函数
4、可以带参数    void sig1(int, double, QString)
5、可以使用emit关键字发送信号

槽:
1、可以自定义槽函数:类的任意成员函数、静态函数、全局函数、lambda表达式
2、槽函数没有返回值:void类型
3、可以带参数    void slot1(int, double, QString)

连接connect:
1、Qt4
1.1、通过宏SIGNAL SLOT
1.2、SIGNAL() / SLOT()两个宏函数体转字符串
1.3、connect(sender, SIGNAL(sig1(int, double, QString)), receiver, SLOT(slot1(int, double, QString)));
1.4、缺点:编译时不会做错误检查
2、Qt5
2.1、信号槽使用的函数地址
2.2、connect(sender,/*信号发送者*/&sender::sig1,/*信号*/receiver,/*信号接收者*/&receiver::slot1/*信号处理函数*/);
2.3、优点:编译过程中会对函数类型、个数做检查

注意事项:
1、信号/槽函数参数个数是可以不一样的
1.1、槽函数参数个数可以少于信号的参数个数
1.2、不可逆
2、信号/槽函数必须一一对应

扩展:
1、信号可以连接信号
2、一个信号可以连接多个槽函数,槽函数的执行顺序是随机的,不可控制
3、一个槽函数可以被多个信号连接
4、槽函数可以使用lambda表达式
5、信号槽连接后,可以被断开disconnect

QMainWindows:
菜单栏最多有一个
QMenuBar* bar = MenuBar();
setMenuBar(bar);
QMenu* fileMenu = bar->addMenu("文件")    创建菜单
QAction * newAction = fileMenu->addAction("新建")    创建菜单项
fileMenu->addSeparator();    添加分割线
工具栏可以有多个
QToolBar* toolbar = new QToolBar(this)
addToolBar(默认停靠区域,toolbar)
Qt::leftToolBarArea
QPushButton * btn = new QPushButton("aa", this)
状态栏最多有一个
QStatusBar * stBar = statusBar();
setStatusBar(stBar); 设置到窗口中
放标签控件
stBar->addWidget(label); 放左侧信息
stBar->addPermanentWidget(label2); 放右侧信息
铆接部件 浮动窗口 可以多个
QDockWidget
addDockWidget(默认停靠区域,浮动窗口指针)
设置后期停靠区域,只允许上下
浮动窗口指针->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
设置核心部件 只能一个
setCentraWidget(edit);

资源文件
1、将图片文件拷贝到项目位置下
2、右键项目 - 》添加新文件 - 》Qt->Qt recourse File->给资源文件起名字
3、res生成res.qrc
4、open in editor 编辑资源
5、添加前缀 添加文件
6、使用 ":+前缀名+文件名"

对话框
1、分类:模态对话框、非模态对话框
模态对话框:不可以对其他窗口进行操作,被阻塞
QDialog dlg(this)
dlg.exec();
非模态对话框:可以对其他窗口进行操作
防止一闪而过,创建到堆区
QDialog* dlg = new QDialog(this)
dlg->show();
dlg->setAttribute(Qt::WA_DeleteOnClose);//设置属性让关闭时delete
2、标准对话框--消息对话框
2.1、QMessageBox静态成员函数,创建对话框
2.2、错误、信息、提问、警告
2.3、参数1 - 父亲 参数2 - 标题 参数3 - 显示内容 参数4 - 按键类型 参数5 - 默认关联回车按键
2.4、返回值,也是StandardRutton类型,利用返回值判断用于的输入
3、其他对话框
3.1、颜色对话框 QColorDialog::getColor
3.2、文件对话框 QFileDialog::getOpenFileName(父亲,标题,默认路径,过滤文件)
3.3、字体对话框 QFontDialog::getFont

界面布局
1、实现登录窗口
2、利用布局方式给窗口进行美化
3、选取widget进行布局,水平布局、垂直布局、栅格布局
4、给用户名、密码、登录、退出按钮进行布局
5、默认窗口和控件之间有9间隙,可以调整layoutLeftMargin
6、利用弹簧进行布局

控件
1、按钮组
1.1、QPushButton 常用按钮
1.2、QTiilButton 工具按钮,用于显示图片,如果要显示文字,修改风格:toolButtonStyle, 凸起风格:autoRaise
1.3、radioButton 单选按钮,设置默认 ui->按钮指针->setChecked(true);
1.4、checkbox 多选按钮,监听状态,2选中 1半选 0未选中

2、QlistWidget 列表容器
2.1、QListWidgetItem * item 一行内容
2.2、ui->listWidget->addItem(item)
2.3、设置居中方式item->setTextAllgnment(Qt::allgnHCenter);
2.4、可以利用addItems一次添加整个诗内容

3、QTreeWidget 树控件
3.1、设置头:ui->treeWidget->setHeaderLabels(QStringList() << "英雄" << "英雄介绍");
3.2、创建根节点:QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList() << "力量");
3.3、添加根节点到树控件上:ui->treeWidget->addTopLevelItem(liItem);
3.4、添加子节点:liItem->addChild(l1);

4、QTableWidget 表格控件
4.1、设置列数ui->tableWidget->setColumncount(3);
4.2、设置水平表头ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
4.3、设置行数ui->tableWidget->setRowCount(5);
4.4、设置正文ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));

5、其他控件介绍
5.1、stackedWidget 栈控件
ui->stackedWidget->setCurrentIndex(1);
5.2、comboBox 下拉框
ui->comboBox->addItem("奔驰");
5.3、Qlabel 显示图片
ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));
5.4、QLabel 显示动图 gif图片
QMovie* movie = new QMovie(":/Image/mario.gif");
ui->lbl_movie->setMovie(movie);
movie->start();

6、自定义控件封装
6.1、添加新文件->QT->设计师界面类(.h  .cpp  .ui)
6.2、.ui中设计QSpinBox和QSlider两个控件
6.3、Widget中使用自定义控件,拖拽一个Widget,点击提升为,点击添加,点击提升
6.4、实现功能,改变数字,滑动条跟着移动,信号槽监听
6.5、提供getNum和setNum对外接口
6.6、测试接口

7、Qt中的事件
7.1、鼠标进入事件 enterEvent
7.2、鼠标离开事件 leaveEvent
7.3、鼠标按下 mousePressEvent(QMouseEvent ev)
7.4、鼠标释放 mouseReleaseEvent
7.5、鼠标移动 mouseMoveEvent
7.6、ev->x() x坐标 ev->y() y坐标
7.7、ev->button()可以判断所有按键 Qt::LeftButton Qt::RightButton
7.8、ev->buttons()判断组合按键 判断move时候的左右键 结合&操作符
7.9、格式化字符串 QString("%1 %2").arg(111).arg(222)

8、定时器1
8.1、利用事件 void timerEvent(QTimerEvent * ev)
8.2、启动定时器 startTimer(1000) 毫秒单位
8.3、timerEvent的返回值是定时器的唯一标识 可以和ev->timerId()做对比

9、定时器2
9.1、利用定时器类QTimer
9.2、创建定时器对象QTimer * timer = new QTimer(this)
9.3、启动定时器 tiemer->start(毫秒)
9.4、每隔一定毫秒,发送信号timeout进行监听
9.5、暂停timer->stoup

10、event事件
10.1、用途:用于事件的分发
10.2、也可以做拦截操作,不建议
10.3、bool event(QEvent * e);
10.4、返回值如果是true代表用户处理这个事件,不向下分发了
10.5、e->type()==鼠标按下

11、事件过滤器
10.1、在程序将事件分发到事件分发器前,可以利用过滤器做拦截
10.2、步骤:给控件安装过滤器-》重写eventfilter函数

12、QPainter绘图
12.1、绘图事件void paintEvent()
12.2、声明一个画家对象QPainter painter(this) this指定绘图设备
12.3、画线、画圆、画矩形、画文字
12.4、设置画笔QPen设置画笔宽度、风格
12.5、设置画刷QBush设置画刷风格

13、QPainter高级设置
13.1、抗锯齿(效率低)painter.setRenderHint(QPainte::Antialiasing)
13.2、对画家进行移动painter.translate(100,0);保存状态save;还原状态restore
13.3、如果想要手动调用绘图事件利用update
13.4、利用画家画图片painter.drawPixmap(x,y,QPixmap(""))

14、QPintDevice绘图设备
14.1、QPixmap QImage QBitmap(黑白色) QPicture QWidget
14.2、QPixmap对不同平台做了显示优化
        QPixmap pix(300, 300);
        pix.fill(颜色);
        利用画家往pix上画画 QPainte painter(&pix);
        保存pix.save("路径");
14.3、QImage可以对像素进行访问
        使用和QPixmap差不多 QImage img(300,300,QImage::Format_RGB32);
        其他流程和QPixmap一样
        可以对像素进行修改img.setPixel(x,y,value);
14.4、记录和重现绘图指令
        QPicture pic;
        painter.begin(&pic);
        保存pic.save(任意后缀名)
        重现 利用画家可以重现painter.drawPicture(0, 0, pic);

15、QFile对文件进行读写操作
15.1、QFile进行读写操作
15.2、QFile file(路径)
15.3、读
        file.open(打开方式) QIODevice::readOnly
        全部读取 file.readAll()  按行读 file.readLine   atend()判断是否读到文件尾
        默认支持编码格式utf-8
        利用编码格式类指定格式 QTextCodec
        QTextCodec *codec = QTextCodec::codeForName("gbk");
        ui->textEdit->setText(code->toUnicode(array))
        文件对象关闭close
15.4、写
        file.open(QIODevice::WriteOnly)
        file.write(内容)
        file.close()关闭
        
16、QFileInfo读取文件信息
16.1、QFileInfo info(路径)
16.2、info.created().toString("yyyy/MM/dd hh:mm:ss") 创建时间
16.3、info.suffix()后缀名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值