Qt - QMainWindow

本文详细介绍了如何在Qt中使用QMainWindow创建包含菜单栏、工具栏、状态栏以及组件的界面,并展示了如何给菜单项和背景添加图片,以及涉及的资源文件管理。
摘要由CSDN通过智能技术生成

目录

1、QMainWindow概述:

2、菜单栏: 

(1)、创建菜单栏

(2)、创建菜单项放入菜单栏

(3)、创建菜单项,加入菜单中

2、工具栏:

(1)、创建工具栏

(2)、创建工具菜单项,添加到工具栏

(3)、控制工具栏的位置

3、状态栏:

(1)、创建状态栏

(2)、添加状态栏信息

5、铆接部件:

6、中心部件:

7、给菜单项和背景增加图片:

(1)、给菜单项增加图片

(2)、设置背景图片

8、运行结果:

9、资源文件: 


1、QMainWindow概述:

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(tool bars)、多个铆接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)。

2、菜单栏: 

(1)、创建菜单栏

        菜单栏的类QMenuBar,菜单栏只有一个

//new创建多个菜单栏
    //QMenuBar *menubar = new QMenuBar(this);
      
    QMenuBar *menubar = menuBar();
    //这个相比new节省了空间,只创建一个菜单栏

    //将菜单栏设置到窗口中
    this->setMenuBar(menubar);

(2)、创建菜单项放入菜单栏

菜单可以有多个,菜单的类是QMenu

 //创建菜单
    QMenu *menu1 = new QMenu("文件");
    QMenu *menu2 = new QMenu("编辑");
    QMenu *menu3 = new QMenu("构建");
    //将菜单添加到菜单栏中
    menubar->addMenu(menu1);
    menubar->addMenu(menu2);
    menubar->addMenu(menu3);

(3)、创建菜单项,加入菜单中

菜单项可以有多个,菜单项的类是QAction

//创建菜单项(也可以创建工具栏)
    QAction *action1= new QAction("打开");
    QAction *action2= new QAction("关闭");

    //将菜单项添加到菜单里面
    menu1->addAction(action1);
    menu1->addSeparator();//添加分割线
    menu1->addAction(action2);

链接关闭按钮和窗口的关闭

//链接关闭按钮和窗口的关闭
    connect(action2,&QAction::triggered,this,&QMainWindow::close);

菜单项的快捷方式设计

 //设置菜单项的快捷方式
    action1->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_N));
    action2->setShortcut(QKeySequence(tr("Ctrl+o")));

2、工具栏:

(1)、创建工具栏

工具栏的类QToolBar,工具栏可以有多个,工具栏的位置默认在最上面,可以改变工具栏的位置

//创建工具栏
    QToolBar *toolbar = new QToolBar(this);

    //将工具栏添加到当前页面(默认位置在最上方)
    //    this->addToolBar(toolbar);
    //将工具栏默认位置修改为左边
    this->addToolBar(Qt::LeftToolBarArea,toolbar);

(2)、创建工具菜单项,添加到工具栏

工具栏的菜单项和菜单的菜单项创建相同,工具栏的菜单项类属于QAction

 //创建工具菜单项
    QAction *action3= new QAction("工具1");
    QAction *action4= new QAction("工具2");

    //添加工具栏
    toolbar->addAction(action3);
    toolbar->addAction(action4);

(3)、控制工具栏的位置

 //工具栏只能移动到左边或者右边
    toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    //修改工具栏不可移动true可以移动,false不可移动
    toolbar->setMovable(true);

    //设置工具栏的浮动状态(true在空白位置可以停留工具栏,false不能)
    toolbar->setFloatable(false);

3、状态栏:

(1)、创建状态栏

状态栏只有一个,一般位于最下面,状态栏的类是QStatusBar。

//创建状态栏(创建一个)
    QStatusBar *statusbar = statusBar();

    //在当前页面添加状态栏
    this->setStatusBar(statusbar);

(2)、添加状态栏信息

状态栏的信息分为临时,正式,永久。临时和正式的位置相同,位于左下角,正式的位于右下角。

当临时和正式同时出现临时会覆盖掉正式的信息栏。信息的类QLable。

//状态栏信息分类,临时,正式,永久
    //增加信息(临时)3000代表三秒
    //statusbar->showMessage("页面显示成功",3000);

    //(临时信息也在左侧会将正式信息覆盖)增加正式信息,一般位于状态栏的左侧
    QLabel *label1 = new QLabel("打开文件",this);
    //addWidget一般在左侧
    statusbar->addWidget(label1);

    //增加永久信息,一般位于状态栏的右侧
    QLabel *label2 = new QLabel("www.qt.com",this);
    //addWidget一般在左侧
    statusbar->addPermanentWidget(label2);

5、铆接部件:

铆接部件可以有多个,铆接部件的类是QDockWidget。

//铆接部件的创建
    QDockWidget *dockwidget = new QDockWidget("first",this);

    //铆接部件添加到页面,位置在最上面
    this->addDockWidget(Qt::TopDockWidgetArea,dockwidget);

6、中心部件:

中心部件是记事本为核心,中心部件的类是QTextEdit。


    //创建记事本作为核心部件
    QTextEdit *edit = new QTextEdit("文本编辑器",this);
    this->setCentralWidget(edit);

7、给菜单项和背景增加图片:

(1)、给菜单项增加图片

首先创建图片控件,图片的类QPixmap,然后选择图片,最后给菜单项设置图片。图片在当前文件的路径下。

//给菜单项增加图片
    //创建图片控件
    QPixmap pix;

    //选择图片
    pix.load(":/open");

    //给菜单项设置图片
    action1->setIcon(QIcon(pix));

(2)、设置背景图片

首先允许设置背景图,然后创建图片控件,选择图片,设置大小,最后将图片设置为背景。

设置背景需要调用调色板类QPalette。

 //允许设置背景图
   this->setAutoFillBackground(true);
//    //创建图片控件,选择图片,并且设置大小
    QPixmap pix1 = QPixmap(":/image/background.jpg").scaled(this->size());

//    //将图片设置为背景
    QPalette palette;
   palette.setBrush(QPalette::Background,QBrush(pix1));
   this->setPalette(palette);

8、运行结果:

9、资源文件: 

给菜单项和背景加图片,就是创建资源文件,把图片放入资源文件中

 

 

 

 

 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是一个简单的 Qt-Designer 点名程序的示例代码: ```python from PyQt5 import QtWidgets, uic import random class MyWindow(QtWidgets.QMainWindow): def __init__(self): super(MyWindow, self).__init__() uic.loadUi('mainwindow.ui', self) #加载 UI 文件 self.studentList = ['Alice', 'Bob', 'Cathy', 'David', 'Eva', 'Frank'] #学生名单 self.pushButton.clicked.connect(self.pickOne) #连接按钮的点击事件和 pickOne 函数 def pickOne(self): student = random.choice(self.studentList) #从名单中随机选择一个学生 self.label.setText(student) #在标签上显示选中的学生名字 if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_()) ``` 在此示例中,我们使用 Qt Designer 创建了一个窗口 UI,并在其中添加了一个标签 `label` 和一个按钮 `pushButton`。我们将按钮的点击事件连接到 `pickOne` 函数,该函数将从预定义的学生名单中随机选择一个学生,并在标签上显示其名字。 你可以按照以下步骤创建此 UI: 1. 打开 Qt Designer。 2. 创建一个新的窗口(Main Window)。 3. 将一个标签(Label)和一个按钮(Push Button)拖放到窗口中。 4. 在属性编辑器中为标签和按钮设置相应的名称和标签文本。 5. 将 UI 保存为 `mainwindow.ui` 文件。 然后你可以运行以上代码,在窗口中点击按钮,程序会随机选择一个学生并在标签上显示其名字。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值