Qt学习-3 <QMainWindow&对话框&资源文件>

——  均为自学笔记,如有错误请指正


第一节 QMainWindow

1. 简介

① QMainWindow 是一个为用户提供主窗口程序的类,包含:

  • 一个菜单栏(menu bar):只能有一个(下图棕红色)
  • 多个工具栏(tool bars):(下图粉色)
  • 多个锚接部件(dock widgets):可以上下左右浮动停靠(下图绿色)
  • 一个状态栏(status bar):提示状态(下图红色)
  • 一个中心部件(central widget):(下图黄色)

② 编写时,set设置只有一个的,add设置可以有多个的:
  • 菜单栏     setMenuBar(bar);
  • 工具栏      addToolBar(Qt::LeftToolBarArea,toolBar); 
  • 状态栏      setStatusBar(stBar);
  • 锚接部件   addDockWidget(Qt::BottomDockWidgetArea,dockwidget); 
  • 中心部件   setCentralWidget(edit);
 2. 创建菜单栏   <QMenuBar>
//菜单栏创建

//一个程序中,菜单栏 只能最多有一个(也可以没有)
QMenuBar * bar = menuBar();        //系统提供的MenuBar()方法


//将菜单栏放入窗口中    因为默认不在窗口中
setMenuBar(bar);


//创建菜单     空的菜单栏不会显示 所以要创建菜单
QMenu * fileMenu = bar->addMenu("文件");
QMenu * editMenu = bar->addMenu("编辑");


//创建菜单项
QAction * newAction = fileMenu->addAction("新建");
fileMenu->addSeparator();    //利用菜单项添加分隔符
QAction * openAction = fileMenu->addAction("打开");
3. 创建工具栏   <QToolBar>
//工具栏创建


//工具栏可以有多个
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); //所有控件都可以用Widget  用add的方式放进去
4. 创建状态栏   <QStatusBar>
// 创建状态栏


//状态栏最多有一个
QStatusBar * stBar = statusBar();


//设置到窗口中
setStatusBar(stBar);


//放置标签的控件
QLabel * label = new QLabel("提示信息",this);
stBar->addWidget(label);

QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addPermanentWidget(label2);
5. 创建锚接部件   <QDockWidget>
//锚接部件  (浮动窗口)


//可以有多个
QDockWidget * dockwidget = new QDockWidget("浮动",this);


//放到窗口中
addDockWidget(Qt::BottomDockWidgetArea,dockwidget);  //(默认区域,指针)


//设置后期停靠区域,只允许上下
dockwidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
6. 中心部件    <QCentralWidget>
//设置中心部件


//中心部件只能有一个
QTextEdit * edit = new QTextEdit(this); //一个文本编辑器


//放到窗口中
setCentralWidget(edit);

第二节  资源文件

1. 文件路径

在读取文件时,路径的写法有如下方式:

  • 文件在当前目录(以图像文件为例,当前项目文件为中心)
 "./1.jpg" 或 "1.jpg"
  • 文件在上层目录 
//在上层目录下
    "../1.jpg"


//在上层目录下的一个Image文件夹下
  "../Image/1.jpg"


//在上上层目录下
  "../../1.jpg"
  • 文件在下一层目录(Image1文件夹)
   "./Image1/1.jpg"
  • 根目录表示法,任何页面访问Image下的Image.jpg图片
  "C:/Image/1.jpg"


——转自:且行且安~

2.  使用添加Qt资源

第一步:在外部放入项目

 第二步:在Qt Creator中添加资源

① 先右击 02_QtSource → Add New...

② 给资源文件起名

③ 生成的文件

④ 转到其他文件会打不开此文件,需要右击res.qrc→Open in Editor操作

⑤ 添加前缀(最简单就是一个 /)

⑥ 添加文件 然后构建 则在左侧栏显示

⑦ 使用Qt资源

//语法
":+前缀名+文件名"

//添加图标
ui->actionnew->setIcon(QIcon("../Image/Luffy.png"));

第三节  对话框

1.  创建对话框(自定义消息对话框)
//点击新建按钮  弹出一个对话框

    connect(ui->actionnew,&QAction::triggered,[=]()
    {
        //对话框分两类:模态对话框、非模态对话框


        //模态对话框创建(不可以对其他的窗口进行操作)
        QDialog dlg(this);
        dlg.resize(300,200);
        dlg.exec();  //阻塞

        //非模态对话框创建(可以对其他的窗口进行操作)
        QDialog * dlg2 = new  QDialog(this);
        dlg2->resize(300,200);
        dlg2->show();       //防止一闪而过,创建到堆区
        lg2->setAttribute(Qt::WA_DeleteOnClose);  //关闭新建的文件,随关闭释放  防止内内存泄漏

});
 2. 标准对话框
QColorDialog选择颜色
QFileDialog选择文件或者目录
QFontDialog选择字体
QInputDialog允许用户输入一个值,并将其值返回
QMessageBox模态对话框,用于显示信息、询问问题等
QPageSetupDialog为打印机提供纸张相关的选项
QPrintDialog打印机配置
QPringPreviewDialog打印预览
QProgressDialog显示操作过程

               

3. 消息对话框

   ① QMwssageBox用法:

//错误对话框
QMessageBox::critical(this,"critical","错误");

//信息对话框
QMessageBox::information(this,"info","信息");

//提问对话框 
//5个参数:(父亲,标题名,提示内容,关联按键类型,默认关联回车按键)
if(QMessageBox::question(this,"ques","提问",QMessageBox::Save     
   |QMessageBox::Cancel,QMessageBox::Cancel)) 
{

}
else 
{

}

//警告对话框
QMessageBox::warning(this,"warning","警告");

//其他标准对话框
QColorDialog::getColor(QColor(255,0,0));  //默认用红色打开

//文件对话框 
//参数(父亲,标题,默认打开路径(不设置路径会按照当前项目打开),过滤文件格式)
//返回值是选取的路径
QFileDialog::getOpenFileName(this,"打开文件","默认路径","(*.txt)");

//字体对话框
//参数 (默认字体名称,字体大小)
bool flag;
QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
qDebug() << "字体: " << font.family().toUtf8().data() << "字号: " << font.pointSize() << "是否加粗: " << font.bold() << "是否倾斜: " << font.italic() ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值