qt控件学习(4)

2023-11-04

QTabWidget 控件

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QTabWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QTabWidget *tabWidget;



};
#endif // MAINWINDOW_H


//tabA 类
class tabA:public QWidget
{
 Q_OBJECT
public:
 tabA(QWidget *parent=0);
};
//tabB 类
class tabB:public QWidget
{
 Q_OBJECT
public:
 tabB(QWidget *parent=0);
};

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

#include <QWidget>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("test app");
    this->setWindowIcon(QIcon(":/new/prefix1/images/favicon.ico"));
//    this->setWindowFlags(Qt::FramelessWindowHint);
//    this->setAttribute(Qt::WA_TranslucentBackground, true);
//    this->setStyleSheet("background:red");

    //实例 QTabWidget
    tabWidget = new QTabWidget(this);
    tabWidget->setGeometry(QRect(0,0,this->width(),this->height()));
    tabWidget->addTab(new tabA,"A 栏目");
    tabWidget->addTab(new tabB,"B 栏目");


}

MainWindow::~MainWindow()
{
    delete ui;
}

tabA::tabA(QWidget *parent):QWidget(parent)
{
 QPushButton *buttonA = new QPushButton(this);
 buttonA->setText("页面 A");
}

tabB::tabB(QWidget *parent):QWidget(parent)
{
 QPushButton *buttonB = new QPushButton(this);
 buttonB->setText("页面 B");
}

效果图
在这里插入图片描述


QMenu、QToolBar 控件

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QToolBar>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
private slots:
    void newFile();

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QMenu *fileMenu, *editMenu, *helpMenu;
    QToolBar *fileToolBar, *editToolBar;
    QAction *newAct;
    QAction *cutAct;
    QAction *copyAct;
    QAction *pasteAct;
    QAction *aboutQtAct;




};
#endif // MAINWINDOW_H


//tabA 类
class tabA:public QWidget
{
 Q_OBJECT
public:
 tabA(QWidget *parent=0);
};
//tabB 类
class tabB:public QWidget
{
 Q_OBJECT
public:
 tabB(QWidget *parent=0);
};

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("test app");
    this->setWindowIcon(QIcon(":/new/prefix1/images/favicon.ico"));
//    this->setWindowFlags(Qt::FramelessWindowHint);
//    this->setAttribute(Qt::WA_TranslucentBackground, true);
//    this->setStyleSheet("background:red");

    //实例菜单
    fileMenu = new QMenu(this);
    editMenu = new QMenu(this);
    helpMenu = new QMenu(this);

    //填充菜单子节点
    newAct = new QAction(QIcon( ":/new/prefix1/images/favicon.ico" ), tr( "新建" ), this );
    newAct->setShortcut(tr("Ctrl+N" ));
    newAct->setStatusTip(tr("新建文件" ));
    connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
    cutAct = new QAction(QIcon(":/new/prefix1/images/favicon.ico" ), tr( "剪切" ), this );
    cutAct->setShortcut(tr("Ctrl+X" ));
    cutAct->setStatusTip(tr("剪切内容" ));
    copyAct = new QAction(QIcon( ":/new/prefix1/images/favicon.ico" ), tr( "复制" ), this );
    copyAct->setShortcut(tr("Ctrl+C" ));
    copyAct->setStatusTip(tr("复制内容" ));
    pasteAct = new QAction(QIcon( ":/new/prefix1/images/favicon.ico" ), tr( "粘贴" ), this );
    pasteAct->setShortcut(tr("Ctrl+V" ));
    pasteAct->setStatusTip(tr("粘贴内容" ));
    aboutQtAct = new QAction(tr( "关于 Qt" ), this );
    aboutQtAct->setStatusTip(tr("关于 Qt 信息" ));
    connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
    //填充菜单
    fileMenu = menuBar()->addMenu(tr( "文件" ));
    fileMenu->addAction(newAct);
    fileMenu->addSeparator();
    editMenu = menuBar()->addMenu(tr("编辑" ));
    editMenu->addAction(cutAct);
    editMenu->addAction(copyAct);
    editMenu->addAction(pasteAct);
    menuBar()->addSeparator();
    helpMenu = menuBar()->addMenu(tr("帮助" ));
    helpMenu->addAction(aboutQtAct);
    //toolBar 工具条
    fileToolBar = addToolBar(tr("新建"));
    fileToolBar->addAction(newAct);
    editToolBar = addToolBar(tr("修改"));
    editToolBar->addAction(cutAct);
    editToolBar->addAction(copyAct);
    editToolBar->addAction(pasteAct);

}

MainWindow::~MainWindow()
{
    delete ui;
}

//子菜单事件
void MainWindow::newFile(){
 QMessageBox::warning(this,tr("Warning"),
 tr("创建新文件?"),
 QMessageBox::Yes | QMessageBox::Default,
 QMessageBox::No);
}


效果图
在这里插入图片描述


QSystemTrayIcon 任务栏控件

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QSystemTrayIcon>//任务栏类
#include <QMenu>//菜单类

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
private slots:
    void showNormal();


public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QSystemTrayIcon *myTrayIcon;
    QMenu *myMenu;
    QAction *restoreWinAction;
    QAction *quitAction;
    void createMenu();





};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("test app");
    this->setWindowIcon(QIcon(":/new/prefix1/images/favicon.ico"));
    //    this->setWindowFlags(Qt::FramelessWindowHint);
    //    this->setAttribute(Qt::WA_TranslucentBackground, true);
    //    this->setStyleSheet("background:red");

    createMenu();
    //判断系统是否支持托盘图标
    if (!QSystemTrayIcon::isSystemTrayAvailable())
    {
        return;
    }
    //实例 QSystemTrayIcon
    myTrayIcon = new QSystemTrayIcon(this);
    //设置图标
    myTrayIcon->setIcon(QIcon(":/new/prefix1/images/favicon.ico"));
    //鼠标放托盘图标上提示信息
    myTrayIcon->setToolTip("Qt 托盘图标功能");
    //设置消息
    myTrayIcon->showMessage("托盘", "托盘管理", QSystemTrayIcon::Information, 10000);
    //托盘菜单
    myTrayIcon->setContextMenu(myMenu);
    //显示
    myTrayIcon->show();
}

MainWindow::~MainWindow()
{
    delete ui;
}

//绘制菜单
void MainWindow::createMenu()
{
    restoreWinAction = new QAction("恢复(&R)", this);
    quitAction = new QAction("退出(&Q)", this);
    //恢复
    connect(restoreWinAction, SIGNAL(triggered()), this, SLOT(showNormal()));
    //退出
    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
    myMenu = new QMenu((QWidget *)QApplication::desktop());
    //添加菜单
    myMenu->addAction(restoreWinAction);
    //分隔符
    myMenu->addSeparator();
    myMenu->addAction(quitAction);
}
//恢复
void MainWindow::showNormal()
{
    this->show();
}
//点击最小化按钮隐藏界面
void QWidget::changeEvent(QEvent *e)
{
    if ((e->type() == QEvent::WindowStateChange) && this->isMinimized())
    { //QTimer::singleShot(100, this, SLOT(hide()));
        this->hide();
    }
}

效果图
在这里插入图片描述


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt控件学习(4) 的相关文章

  • QGraphicsView 和 eventFilter

    这个问题已经困扰我两天多了 所以我想我应该问一下 我在Win7上使用Qt 4 5 3 用VC2008编译 我有 MyGraphicsView 继承 QGraphicsView 和 MyFilter 继承 QObject 类 当我将 MyFi
  • Qt程序部署到多平台,如何?

    我是 Qt 编程新手 我想开发一个程序 我想在 Windows Linux ubuntu 和 Mac 上运行 听说Qt支持多平台应用程序开发 但我的问题是 在我部署或编译后 任何 Qt 库都需要在 Ubuntu 中运行这个应用程序吗 如果您
  • 有没有办法在没有 QApplication::exec() 的情况下使用 Qt?

    有没有一种安全的方法可以在不调用 QApplication exec 的情况下使用 Qt 我有许多不同的对象正在对多个资源执行长期进程 至少其中一个正在与 Web 应用程序服务器进行通信 我正在制作一个 GUI 应用程序 提示用户在正确的时
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • Qt Creator:如何区分 win32 和 win64

    我必须在 pro 文件中执行类似的操作 win32 LIBS L 3rdparty libusb win32 lib msvc llibusb else win64 LIBS L 3rdparty libusb win32 lib msvc
  • 如何创建QWidget的屏幕截图?

    我在 Qt Creator 中做作业 在其中绘制 QWidget 并且需要保存此 QWdiget 的某些部分 我试图解决这个问题 QPixmap pixmap pixmap copy rectangle rectangle is part
  • QT/QML Android App,点击通知栏时打开应用程序

    我为 Android 应用程序制作了一个 QT 当我单击平板电脑中上面看到的按钮通知栏时 但是 如果单击通知 我的应用程序将打开 聚焦 不知道 并显示黑色窗口 简单来说怎么做呢 我的代码是 package org ays operation
  • Qt中如何获取鼠标在屏幕上的位置?

    我想获取屏幕上的鼠标坐标 我怎样才能在 Qt 中做到这一点 在 Windows 上 使用 C 我正在做类似答案中建议的事情对于这个问题 https stackoverflow com q 11737665 1420197 正如文档所述 QC
  • QtCreator 调试暂停停在代码而不是汇编处

    如何配置 QtCreator 以便在调试并按下暂停时它会显示当前正在处理的代码 现在显示汇编 无法在任何地方找到有关此问题的答案 我使用的是 Windows 7 我在 Ubuntu 16 04 中使用 Qt Creator 4 2 2 时遇
  • 向 Qt 样式表添加特异性时丢失样式

    这是我的代码 const QString STYLE SHEET background color rgba x x x y border 1px solid gray border radius 0px border top 1px so
  • 即使在可访问性中勾选应用程序,AXIsProcessTrustedWithOptions 也不会返回 true

    As this question https stackoverflow com questions 17693408 enable access for assistive devices programmatically on 10 9
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • Qt:如何连接到 SQLite?

    我安装了 SQLite3 解压到 c sqlite 创建了一个数据库 c sqlite mzsales 现在我试图在 QTableView 中显示其内容 QSqlDatabase db QSqlDatabase addDatabase QS
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • QT从QTableWidgetItem继承到Widget并覆盖'<'运算符

    我想要一个QTableWidget具有定制的某些单元QProgressBars 并且我希望能够对包含这些的列进行排序 我的定制QProgressBar继承自两者QProgressBar and QTableWidgetItem 并且我正在覆
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • Qt 是否已经有了自己的 new 和 delete 运算符?

    我正在使用一个QGraphicsScene小部件并在其上显示一些点QGraphicsRectItem 这意味着要拨打很多电话new addItem 当出现时 并且removeItem delete摆脱未使用的点 当然 对于性能问题 我已经实
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my
  • Mac 上的 Qt — 如何访问帮助菜单中的“搜索”

    我正在将我的 Qt 应用程序移植到 Mac OS X 在 Windows Linux 上 我使用 QLineEdit 在帮助菜单中提供搜索功能 In Mac OS X I saw something like this is built i

随机推荐

  • 【前端】Vue项目:旅游App-(2)TabBar:搭建TabBar、循环获取动态数据、相关工具封装

    文章目录 目标 代码与过程 静态html css 改成动态数据 效果 总代码 修改或新建的文件 tabbarData js tab bar vue load assets App vue 目标 有两种实现方式 把数据写死 静态 直接写在ht
  • DotNetZip知识系列:用来解压缩zip

    说明 这是 net平台可以使用的一个库 NuGet Gallery Package Downloads for DotNetZip 这是官方文档 About DotNetZip DotNetZip Documentation
  • 2022.03.06 mysql8拉链表-测试

    1 创建业务表并初始数据 drop table if exists mall user create table mall user uid bigint unsigned auto increment comment 用户唯一ID pri
  • shell快速迁移海量文件的两种方案

    最近遇到这样一个小需求 linux服务器上某个目录下有几百万个文件 导致各种操作不便 急需转移历史文件 保留90天 同时对转移到的目录下新建日期文件夹 按文件创建来存放文件 想到了两种解决方案 第一种直接按创建日期find 这样需检索整个目
  • 容器化部署dex适配openldap

    ldap LDAP 在OIDC流程中是用来做身份认证服务的 包括LDAP身份认证服务器 自己的第三方应用需要调用LDAP的客户端接口 用以访问LDAP服务器进行身份验证 作用 用户验证 用户管理 ldap它是用来做统一用户身份认证的 即 你
  • 电机磁链和反电势系数关系

    电机磁链和反电动势系数辨识 刚接触电机 不久 很容易就被绕晕了 磁链 空载相反电势幅值 电角频率 text 磁链 varphi frac text 空载相反电
  • img 显示response图片数据

    url http blog csdn net ykf69177 article details 8655881 url img src servlet IdentityServlet
  • 将分数阶工具箱FOMCON加入simulink中

    1 下载FOMCON toolbox压缩文件 网址为gitee下载地址 2 将下载的压缩文件放于安装matlab的文件夹 gt toolbox 并解压缩 3 添加路径 点击设置路径 添加文件夹 添加并包含子文件夹 点击保存 4 关闭matl
  • Linux基础命令-history历史记录

    Linux基础命令 alias设置别名 Linux学习中的博客 CSDN博客 文章目录 前言 一 history命令介绍 二 语法及参数 三 参考实例 总结 前言 在工作中 经常会需要多次重复某一个命令 或者需要查看之前执行过什么命令 那么
  • C/C++程序算法小练习--大整数减法

    大整数减法 include
  • 《软件测试》第10章 数据流测试

    本节是根据书籍 软件测试 Paul C Jorgensen著 中第十章的内容进行学习总结 更详尽的内容请查看作者原文 另在此也感谢原著作者的著文分享 本章主要内容如下
  • linux 安装jdk

    1 下载JDK jdk下载地址 http www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 2 安装jdk 因为我安装的CentOS7
  • 项目实战二:关于element-ui前端框架自定义排序功能

    前言 近期 前端在开发的过程中 需要根据列表中字符串形式的数字进行升序或者降序排序 直接排序肯定是有问题的 这时就需要用到自定义排序的方式了 还有就是先将字符串的数字转化为Number类型的 具体代码如下 开启排序
  • blender建模常用建模快捷键

    编辑物体 M2选取 M2 SHIFT选取多个 A全选 B M1矩阵选择 C M1笔刷选择 CTRL M1套索选择 CTRL SHIFT M1取消套索选择 ALT M2选择边循环 面 CTRL ALT M2环边选择 线 CTRL 小键盘的 扩
  • 安卓移动应用开发之从零开始写安卓小程序2

    实验二 安卓文件的简介和我们的第一个安卓小程序 发布文章时没有保存 导致文章不对 在此抱歉 这次补上了 一 HelloWorld创建 1 File New NewProject 名字我们就写HelloWorld 其他都默认 包名可能会和我不
  • Spring Security入门

    1 Spring Security 简介 Spring Security 是一个高度可定制的身份验证和访问控制框架 它基于 Spring 框架 并可与 Spring 全家桶无缝集成 该框架可以精确控制用户对应用程序的访问 控制用户的角色和权
  • 二级路由dhcp关闭连不上wifi_手把手教你天翼校园网开wifi

    温馨提示 1 非广东海洋大学的学生或所用校园不是天翼校园网的童鞋可以酌情忽略本推文 2 为照顾小白 本文比较详细 请各位耐心阅读 天翼校园网大概是我见过最恶心的校园网了 表面说着是为了 保证上网环境安全 强制一号一终端 还不能开热点 实际上
  • Nginx配置origin限制跨域请求(应对等保)

    Nginx需要修复一个安全漏洞 这个需要根据客户端传递的请求头中的Origin值 进行安全的跨站策略配置 目的是对非法的origin直接返回403错误页面 配置如下 1 在http中定义一个通过map指令 定义跨域规则并返回是否合法 htt
  • python实现的jsencryp加密后端无法解密_python 3 实现js中JSEncrypt encrypt方法,rsa模块根据字符串公钥生成加密字符串...

    coding utf 8 import base64 import rsa all rsa encrypt def str2key s 对字符串解码 b str base64 b64decode s if len b str lt 162
  • qt控件学习(4)

    文章目录 QTabWidget 控件 QMenu QToolBar 控件 QSystemTrayIcon 任务栏控件 QTabWidget 控件 mainwindow h ifndef MAINWINDOW H define MAINWIN