CSDN话题挑战赛第2期
参赛话题:Qt应用程序开发
6.1 分类
6.1.1 模态对话框(不可以对其他窗口进行操作、阻塞)
6.1.1.1 QDialog dlg(this)
6.1.1.2 dlg.exec()
6.1.2 非模态对话框(可以对其他窗口进行操作)
6.1.2.1 防止一闪而过,把它创建在堆区
6.1.2.2 QDialog *dlg = newQDialog(this)
6.1.2.3 dlg->show()
6.1.2.4 dlg>setAttribute(Qt::WA_DeleteOnClose);
6.2 标准对话框 -- 消息对话框
6.2.1 QMessageBox 静态成员函数 创建对话框
6.2.2 错误、提问、信息、警告
6.2.3 参数1:父亲 参数2:标题 参数3:显示内容 参数4:按键类型 参数5:默认回车按键
6.2.4 返回值也是 StandarButton,利用返回值判断用户的输入
6.3 其他标准对话框
6.3.1 颜色对话框 QColorDialog::getColor
6.3.2 文件对话框 QFileDialog::getOpenFileName(父亲,标题,默认路径,过滤,文件)
6.3.3 字体对话框 QFontDialog::getFont
7 界面布局
7.1 实现登录窗口
7.2 利用布局方式,给窗口进行美化
7.3 选取widget 进行布局,有水平布局、垂直布局、网格布局
7.4 给用户名、登录、退出按钮进行布局
4.5 默认窗口和控件之间有9间隙,可以调整layoutLeftMargin
4.6 利用弹簧进行布局
8 控件
8.1 按钮组件
5.1.1 QPushButton 常用按钮
5.1.2 QToolButton 工具按钮,可用于显示图片,如图想显示文字,修改风格;toolButton,凸起风格autoRaise
5.1.3 radioButton 单选按钮,设置默认ui->rBtnMan->setChecked(true);
5.1.4 checkBox 多选按钮,监听状态 2:选中 1:半选 0未选中
8.2 QListWidget 列表容器
8.2.1 QListWidgetItem 一行内容
8.2.2 ui->listWidget->addItem(item);
8.2.3 设置居中方式 item->setTextAlignment(Qt::AlignHCenter);
8.2.4 可以利用addItems一次性添加整个诗内容
8.3 QTreeWidget 树控件
8.3.1 设置头
8.3.1.1 ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");
8.3.2 创建根节点
8.3.2.1 QTreeWidgetItem * LiItem = new QTreeWidgetItem(QStringList()<<"力量");
8.3.3 添加根节点到树控件上
8.3.3.1 ui->treeWidget->addTopLevelItem(LiItem);
8.3.4 添加子节点
8.3.4.1 LiItem->addChild(l2);
8.4 QTableWidget 表格控件
8.4.1 设置列数
8.4.1.1 ui->tableWidget->setColumnCount(3);
8.4.2 设置水平头
8.4.2.1 ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
8.4.3 设置行数
8.4.3.1 ui->tableWidget->setRowCount(5);
8.4.4 设置正文
8.4.4.1 ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));
8.5 其他控件介绍
8.5.1 stackedWidget控件介绍
8.5.1.1 ui->stackedWidget->setCurrentIndex(2);
8.5.2 下拉框
8.5.2.1 ui->comboBox->addItem("奔驰");
8.5.3 QLabel显示图片
8.5.3.1 ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));
8.5.4 QLabel显示,GIF动态图片
8.5.4.1 ui->lbl_movie->setMovie(movie);
8.5.4.2 movie->start();
8.6 自定义控件封装
8.6.1 添加新文件,Qt - 设计师界面类(.h .cpp .ui)
8.6.2 .ui中设计QSpinBox和QSlider两个控件
8.6.3 Widget中使用自定义控件,拖拽一个Widget,点击提升为->点击添加->点击提升
8.6.4 实现功能,改变数字,滑动条跟着移动,信号槽监听
8.6.5 提供getNum 和 setNum对外接口
8.6.6 测试接口
9 Qt消息机制事件
9.1 Qt事件
9.1.1 鼠标事件
鼠标离开事件 leaveEvent
鼠标进入事件 enterEvent
鼠标按下 mousePressEvent(QMouseEvent ev)
鼠标释放 mouseReleaseEvent
鼠标移动 mouseMoveEvent
x坐标:ev->x() y坐标:ev->y()
ev->button() 可以判定所有按键 Qt::LeftButton Qt::RightButton
ev->buttons() 判断组合按键 判断move时候的左右按键 结合 & 操作符
格式化字符串 QString("%1 %2....").arg(222)
9.2 定时器
9.2.1 定时器1
1. 利用事件 void timerEvent(QTimerEvent *ev);
2. 启动定时器startTimer(1000)毫秒单位
3. timerEvent的返回值是定时器的唯一标示,可以和ev->timerId做比较
9.2.2 定时器2
1. 利用定时器类QTimer
2. 创建定时器对象 QT* timer = new QTimer(this)
3. 启动定时器 timer->start()
4. 每隔一定毫秒,发送信号 timeout,进行监听
5. 暂停 timer-stop
9.3 event事件
1.用途:用于事件的分发
2.也可以做拦截操作,不建议使用
3.bool event(QEvent *ev); 返回值如果是true代表用户处理这个事件,不用向下分发了
4.e->type() == 鼠标按下
9.4 事件过滤器
9.4.1 在程序将时间分发到事件分发器前,可以利用过滤器做拦截
9.4.2 步骤
1.给控件安装事件过滤器
2.重写eventFilter函数(obj,ev)
10 QPainter 绘图
10.1 QPainter
1.绘图事件 void paintEvent()
2.声明一个画家对象 QPainter painter(this) this指定绘图设备为该为widget
3.画线、画圆、画矩形、画文字
4.设置画笔 QPen 设置画笔高度、风格
5.设置画刷QBrush 设置画刷 风格
10.2 QPainter 高级设置
1.抗锯齿但效率低
painter.setRenderHint(QPainter::Antialiasing); //不知道里面参数应该填写什么,可以查看帮助文档
2.对画家进行移动
painter.translate(100,0);
保存画家状态 painter.save();
还原画家状态 painter.restore();
3.如果想手动调用绘图事件 利用update
4.利用画家画图片 painter.drawPixmap(posX,posY,QPixmap(":/Image/Luffy.png"));
10.3 QPainter高级设备
10.3.1 QPixmap QImage QBitmap(黑白色) QPicture QWidget
10.3.2 QPixmap 对不同平台做了显示的优化
1.QPixmap pix(300,300);
2.pix.fill(Qt::white); //填充背景颜色
3.利用画家往pix上画画 QPainter painter(&pix);
4.保存 pix.save("路径");
10.3.3 利用QImage 对像素进行修改
1.使用和QPixmap差不多 Image img(300,300,QImage::Format_RGB32);
2.其他流程和QPixmap一样
3.可以对像素进行修改 img.setPixel(i,j,value);
10.3.4 QPicture 记录和重现绘图指令
1.QPicture pic
2.painter.begin(&pic);
3.保存 pic.save("路径"); 注意后缀名
4.重现 利用画家可以重现painter.drawPicture(0,0,pic);
**如果对你有帮助的话,请不要忘了给我一点点点...........支持 \( ^ o ^)/~**