QT从控件部分知识点整理

2021-11-15 11:42:06 浏览数 (2)

QT中的工具栏和菜单栏

  • QMainWindow
    • 菜单栏创建演示:
    • 工具栏创建演示:
    • 状态栏创建演示:
    • 铆接部件(浮动窗口)创建演示:
    • 中心部件创建演示:
  • 资源文件添加
  • 模态和非模态对话框
  • 消息对话框
  • 颜色对话框
  • 文件对话框
  • 字体对话框

QMainWindow

菜单栏在为空的状态下,什么都不会显示

菜单栏创建演示:

代码语言:javascript复制
    //菜单栏创建---菜单栏最多只能有一个
    QMenuBar*b=menuBar();
    //将菜单栏放入到窗口中---菜单栏在为空的状态下,什么都不会显示
    setMenuBar(b);
    //创建菜单
     QMenu *fileMenu= b->addMenu("文件");
     QMenu* editMenu=b->addMenu("编辑");
     //创建菜单项目
     fileMenu->addAction("新建");
     //添加分隔符
     fileMenu->addSeparator();
     fileMenu->addAction("打开");

工具栏创建演示:

1.设置工具栏默认的停靠区域

2.设置可以停靠的区域,例如:只能停靠在左和右 3.设置工具栏是否可以浮动,即工具栏要么停靠在左边,要么停靠在右边,一撒手就立刻回去了 4.设置移动:如果传入一个false,则表示该工具栏无法拖拽移动

代码语言:javascript复制
    //重置窗口大小
    resize(600,400);
    //菜单栏创建---菜单栏最多只能有一个
    QMenuBar*b=menuBar();
    //将菜单栏放入到窗口中---菜单栏在为空的状态下,什么都不会显示
    setMenuBar(b);
    //创建菜单
     QMenu *fileMenu= b->addMenu("文件");
     QMenu* editMenu=b->addMenu("编辑");
     //创建菜单项目
     QAction* FileAction=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(FileAction);
     //添加分割线
     toolBar->addSeparator();
     toolBar->addAction(OpenAction);
     //工具栏中添加控件
     QPushButton* btn=new QPushButton("关闭程序",this);
     toolBar->addWidget(btn);

状态栏创建演示:

代码语言:javascript复制
   //状态栏 最多有一个
     QStatusBar* stBar=statusBar();
     //放置到窗口中
     setStatusBar(stBar);
     //放标签控件
     QLabel* label=new QLabel("提示信息",this);
     //放置在左侧
     stBar->addWidget(label);
     
     QLabel* label2=new QLabel("右侧提示信息",this);
     //放置在右侧
     stBar->addPermanentWidget(label2);

铆接部件(浮动窗口)创建演示:

放置区域的参数:

代码语言:javascript复制
  //铆接部件(浮动窗口)可以有多个
     QDockWidget* dockWidget=new QDockWidget("浮动",this);
     //停靠在核心部件下部
     addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
      //设置后期停靠区域,只能停靠在上面或者下面
     dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

中心部件创建演示:

代码语言:javascript复制
     //设置中心部件---只能有一个
     QTextEdit* edit=new QTextEdit(this);
     setCentralWidget(edit);

资源文件添加

步骤1: 找到当前项目所在文件夹,将对应的资源放入当前项目所在的文件夹

步骤2:

选择QRF:

点击Open in Editor来编辑资源文件


模态和非模态对话框

代码语言:javascript复制
   //点击新建按钮,弹出一个对话框
    connect(ui->newFile, &QAction::triggered,[=](){
        //对话框 分类
        //模态对话框(打开该对话框之后,不可以对其他窗口进行操作,相当于堵塞了代码)
        //模态对话框创建---阻塞
        QDialog dlg(this);
        //重载模态对话框大小
        dlg.resize(200,100);
        dlg.exec();
        qDebug()<<"模态对话框弹出了";
        
        //非模态对话框(打开了该对话框之后,可以对其他窗口进行操作)
          //QDialog dlg2(this); 这里放在匿名函数对象,生命周期只有一行,对话框一闪而过,建议在堆区创建
        QDialog* dlg2=new QDialog(this);//重复点击关闭窗口,会重复再堆区创建对象,导致内存泄露
        dlg2->resize(200,100);
        dlg2->show();
        //设置对话框属性,关闭对话框就释放当前对话框对象
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        qDebug()<<"非模态对话框弹出了";

消息对话框

QMessageBox中常用的静态成员函数:

消息对话框和错误对话框演示:

代码语言:javascript复制
    //消息对话框
    //错误对话框---弹出一个警告窗口
    QMessageBox::critical(this,"警告","用户名错误");//父亲  标题  内容
     
    //信息对话框
    QMessageBox::information(this,"信息","请输入密码");

提问对话框演示:

提问对话框第四个参数:

代码语言:javascript复制
    //提问对话框
  QMessageBox::question(this,"提问","你叫什么?",
  QMessageBox::Help|QMessageBox::Apply,QMessageBox::Apply);
  //第四个参数:按键类型  第五个参数:设置默认激活的选项,默然关联回车按键

返回值就是第四个参数的类型:

代码语言:javascript复制
   if(QMessageBox::Help==QMessageBox::question(this,"提问","你叫什么?",
    QMessageBox::Help|QMessageBox::Apply,QMessageBox::Apply))
   {
       qDebug()<<"选择了帮助按键";
   }

颜色对话框

代码语言:javascript复制
     //颜色对话框
    QColor color=QColorDialog::getColor(QColor(255,0,0));
    qDebug()<<"r= "<<color.red()<<"  g="<<color.green()<< " b="<<color.blue();

文件对话框

代码语言:javascript复制
//文件对话框---打开c盘文件夹  
    //父亲   标题   默认打开路径  过滤文件格式  返回QString: 选取的路径
    QString s=QFileDialog::getOpenFileName(this,"打开文件","c:","(*.txt)");

字体对话框

代码语言:javascript复制
//字体对话框
        bool flag;
    QFont font=QFontDialog::getFont(&flag,QFont("华文彩云",36));
    //去掉中文显示有双引号
     qDebug()<<"字体: "<<font.family().toUtf8().data()<<"  字号:"<<font.pointSize()<<
               "  是否加粗:"<<font.bold();

0 人点赞