Qt学习2
跟学视频
1.菜单栏和工具栏
//菜单栏最多只能有一个//菜单栏创建QMenuBar * bar = menuBar();//将菜单栏放到窗口中setMenuBar(bar);//创建菜单QMenu * fileMenu = bar->addMenu("开始");QMenu * editMenu = bar->addMenu("编辑");//创建菜单项QAction * newAction = fileMenu->addAction("新建");//添加分隔符fileMenu->addSeparator();QAction * openAction = fileMenu->addAction("打开");//工具栏 可以有多个QToolBar * toolBar = new QToolBar(this);addToolBar(Qt::LeftToolBarArea,toolBar);//默认停靠在左边//后期设置 只允许 左右停靠toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//设置浮动toolBar->setFloatable(false);//设置移动(总开关)toolBar->setMovable(false);//工具栏可以设置内容toolBar->addAction(newAction);//添加分隔符toolBar->addSeparator();toolBar->addAction(openAction);//工具栏中添加控件QPushButton * btn = new QPushButton("aa",this);toolBar->addWidget(btn);
2.状态栏、铆接部件、核心部件
//状态栏 最多有一个QStatusBar * stBar = statusBar();setStatusBar(stBar);//放标签控件QLabel * label = new QLabel("提示信息",this);stBar->addWidget(label);QLabel * label2 = new QLabel("右侧提示信息",this);stBar->addPermanentWidget(label2);//铆接部件 (浮动窗口) 可以有多个QDockWidget * dockWidget = new QDockWidget("浮动",this);addDockWidget(Qt::BottomDockWidgetArea,dockWidget);//设置后期停靠区域dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);//设置中间部件 只能一个QTextEdit * edit = new QTextEdit(this);setCentralWidget(edit);
3.添加资源文件
1.项目文件名右击,添加新文件,Qt->Qt resouce file,文件名 res
2.先要把添加的资源放到建立的项目文件下,添加前缀“/”,添加文件,添加文件后,点左下角构建
//使用Qt添加资源 ":+ 前缀名 + 文件名"ui->actionnew->setIcon(QIcon(":/Image/Luffy.png"));ui->actionopen->setIcon(QIcon(":/Image/LuffyQ.png"));
4.模态和非模态对话框
//对话框 分类//模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)//模态创建 阻塞QDialog dlg(this);dlg.exec();//此时执行到此会弹出一个窗口,关闭窗口后,才会执行下边的代码(拥有阻塞功能)qDebug() << "模态对话框弹出了";//非模态对话框// QDialog dlg2(this);// dlg2.show();//show函数是在lambda函数中,当执行完该函数,show程序会释放掉,所以会出现窗口一闪而过的现象QDialog * dlg2 = new QDialog(this);//存放堆区dlg2->resize(200,100);dlg2->show();dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号 属性qDebug() << "非模态对话框弹出了";
5.消息对话框
静态成员函数(static public func)
//消息对话框//错误对话框QMessageBox::critical(this,"critical","错误");//信息对话框QMessageBox::information(this,"info","信息");//提问对话框//参数1 父亲 参数2 标题 参数3 提示内容 参数4 按键类型 参数5 默认关联回车按键if( QMessageBox::Save == QMessageBox::question(this,"ques","错误",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)){qDebug() << "选择的是保存";}else{qDebug() << "选择的是取消";}//警告对话框QMessageBox::warning(this,"warning","警告");
6.其他对话框
//其他标准对话框//颜色对话框QColor color = QColorDialog::getColor(QColor(255,0,0));qDebug() << " r = " << color.red() << " g = " << color.green() << " b = " << color.blue();//文件对话框 参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件格式//返回值是 文件打开地址QString str = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\16385\\Desktop","*.txt");qDebug() << str;//字体对话框bool flag;QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));qDebug() << "字体:" << font.family().toUtf8().data() << "字号:" << font.pointSize() << "是否加粗: " <<font.bold() << "是否倾斜: "<<font.italic();
7.控件
按钮组
- QPushButton 常用按钮
- QToolButton 工具按钮 用于显示图片,如图想显示文字,修改风格:toolButtonStyle , 凸起风格autoRaise
- radioButton 单选按钮,设置默认 ui->rBtnMan->setChecked(true);
- checkbox多选按钮,监听状态,2 选中 1 半选(QcheckBox下的tristate) 0 未选中
//设置单选按钮 男默认选中 rBtnMan是按钮的重命名ui->rBtnMan->setChecked(true);//选中女后 打印信息connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){qDebug() << "选中了女了";});//多选按钮 2是选中 0是未选中connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){qDebug() << state;});
QListWidget 列表容器
//利用ListWidget写诗QListWidgetItem * item = new QListWidgetItem("锄禾日当午");//将这一行放到listwidget中ui->listWidget->addItem(item);item->setTextAlignment(Qt::AlignHCenter);//水平居中对齐//利用addItems一次性添加整个诗内容QStringList list;list << "锄禾日当午" << "汗滴禾下土" << "谁知盘中餐" << "粒粒皆辛苦";ui->listWidget->addItems(list);
QTreeWidget 树控件
//设置水平头ui->treeWidget->setHeaderLabels(QStringList () << "英雄" << "英雄介绍");QTreeWidgetItem * LiItem = new QTreeWidgetItem(QStringList() << "力量");QTreeWidgetItem * MinItem = new QTreeWidgetItem(QStringList() << "敏捷");QTreeWidgetItem * ZhiItem = new QTreeWidgetItem(QStringList() << "智力");//加载顶层的节点ui->treeWidget->addTopLevelItem(LiItem);ui->treeWidget->addTopLevelItem(MinItem);ui->treeWidget->addTopLevelItem(ZhiItem);//追加子节点QStringList heroL1,heroL2,heroM1,heroM2,heroZ1,heroZ2;heroL1 << "刚被猪" << "前排坦克,能在吸收伤害的同时造成可观的范围输出";heroL2 << "船长" << "前排坦克,能肉能输出能控场的全能英雄";heroM1 << "月骑" << "中排物理输出,可以使用分裂利刃攻击多个目标";heroM2 << "小鱼人" << "前排战士,擅长偷取敌人的属性来增强自身战力";heroZ1 << "死灵法师" << "前排法师坦克,魔法抗性较高,拥有治疗技能";heroZ2 << "巫医" << "后排辅助法师,可以使用奇特的巫术诅咒敌人与治疗队友";QTreeWidgetItem *l1 = new QTreeWidgetItem(heroL1);QTreeWidgetItem *l2 = new QTreeWidgetItem(heroL2);QTreeWidgetItem *m1 = new QTreeWidgetItem(heroM1);QTreeWidgetItem *m2 = new QTreeWidgetItem(heroM2);QTreeWidgetItem *z1 = new QTreeWidgetItem(heroZ1);QTreeWidgetItem *z2 = new QTreeWidgetItem(heroZ2);LiItem->addChild(l1);LiItem->addChild(l2);MinItem->addChild(m1);MinItem->addChild(m2);ZhiItem->addChild(z1);ZhiItem->addChild(z2);
QTableWidget控件
//TableWidget控件//设置列数ui->tableWidget->setColumnCount(3);//设置水平表头ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");//设置行数ui->tableWidget->setRowCount(5);//设置正文QStringList nameList;nameList <<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";QStringList sexList;sexList<<"男"<<"男"<<"男"<<"男"<<"女";for(int i=0;i<5;i++){int col=0;ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));//int 转 Qstringui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18+i)));}
-
- 其他控件介绍
- stackedWidget 栈控件
- ui->stackedWidget->setCurrentIndex(1);
- 下拉框
- ui->comboBox->addItem("奔驰");
- QLabel 显示图片
- ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"))
- QLabel显示动图 gif图片
- ui->lbl_movie->setMovie(movie);
- movie->start();
- stackedWidget 栈控件
- 其他控件介绍
//设置默认定位scrollAreaui->stackedWidget->setCurrentIndex(0);//scrollArea按钮connect(ui->ScrollArea,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(1);});//TabWidget按钮connect(ui->TabWidget,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(0);});//ToolBox按钮connect(ui->ToolBox,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(2);});//利用QLabel显示图片ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));//利用QLabel显示gif动图QMovie * movie = new QMovie(":/Image/mario.gif");ui->lbl_movie->setMovie(movie);movie->start();//开始播放