Qt 28 主窗口中的工具栏 模仿Windows文本编辑器界面 菜单栏+工具栏

Qt之定制个性化系统托盘菜单(仿360安全卫士) 上图是我仿的360安全卫士的托盘菜单。顶部和底部的两个菜单项都将背景色设置成了360安全卫士的主题色,中间的大菜单项由6个按钮组成,像这些非规则的菜单项都需定制。虽然360安全卫士总是无缘无故拦截我,但是360产品外观设计还是非常赞的,要不也不会被众多程序猿模仿。 阅读详情

学习自唐佐林老师Qt


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

在这里插入图片描述如:
设置菜单栏不可以悬浮
setFloatable(false);

设置菜单栏不可以停靠
tb->setMovable(false);

调整工具栏大小
setIconSize(QSize(16, 16));
在这里插入图片描述
实验1 工具栏使用:

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui/QMainWindow>
class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};
#endif // MAINWINDOW_H

MainWindow.cpp

#include "MainWindow.h"
#include <QToolBar>
#include <QAction>
#include <QIcon>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    //创建工具栏对象
    QToolBar* tb = addToolBar("Tool Bar");
    //创建快捷项
    QAction* action = new QAction("", NULL);
    //设置菜单栏不可以悬浮
    tb->setFloatable(false);
    //设置菜单栏不可以停靠
    tb->setMovable(false);
    //设置提示的标签
    action->setToolTip("Open");
    //设置图标
    action->setIcon(QIcon(":/Res/open.png"));
    //向 快捷项 添加到 工具栏对象
    tb->addAction(action);
    //创建 按钮,标签,输入文本框
    QPushButton* b = new QPushButton("Button");
    QLabel* l = new QLabel("Label");
    QLineEdit* e = new QLineEdit();
    //将 按钮,标签,输入文本框 加入到工具栏
    tb->addWidget(b);
    tb->addWidget(l);
    tb->addWidget(e);
}
MainWindow::~MainWindow()
{
    
}

main.cpp

#include <QtGui/QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    return a.exec();
}

在这里插入图片描述

实验2: 文本编辑器:菜单栏+工具栏

mainwindow.h

#ifndef _MAINWINDOW_H_
#define _MAINWINDOW_H_
#include <QtGui/QMainWindow>
#include <QKeySequence>
#include <QMenuBar>
#include <QToolBar>
#include <QAction>
class MainWindow : public QMainWindow
{
    Q_OBJECT
private:
    MainWindow();
    MainWindow(const MainWindow&);
    MainWindow& operator= (const MainWindow&);
    bool construct();
    bool initMenuBar();
    bool initToolBar();
    bool initFileMenu(QMenuBar* mb);
    bool initEditMenu(QMenuBar* mb);
    bool initFormatMenu(QMenuBar* mb);
    bool initViewMenu(QMenuBar* mb);
    bool initHelpMenu(QMenuBar* mb);
    bool initFileToolItem(QToolBar* tb);
    bool makeAction(QAction*& action, QString text, int key);
    bool makeAction(QAction*& action, QString tip, QString icon);
public:
    static MainWindow* NewInstance();
    ~MainWindow();
};
#endif // _MAINWINDOW_H_


mainwindow.cpp


#include "MainWindow.h"
#include <QMenu>
#include <QIcon>
#include <QSize>
MainWindow::MainWindow()
{
}
MainWindow* MainWindow::NewInstance()
{
    MainWindow* ret = new MainWindow();
    if( (ret == NULL) || !ret->construct() )
    {
        delete ret;
        ret = NULL;
    }
    return ret;
}
bool MainWindow::construct()
{
    bool ret = true;
    ret = ret && initMenuBar();
    ret = ret && initToolBar();
    return ret;
}
//菜单栏 - >各个下拉菜单组
bool MainWindow::initMenuBar()
{
    bool ret = true;
    QMenuBar* mb = menuBar();
    ret = ret && initFileMenu(mb);
    ret = ret && initEditMenu(mb);
    ret = ret && initFormatMenu(mb);
    ret = ret && initViewMenu(mb);
    ret = ret && initHelpMenu(mb);
    return ret;
}
//工具栏
bool MainWindow::initToolBar()
{
    bool ret = true;
    //创建工具栏对象
    QToolBar* tb = addToolBar("Tool Bar");
    //调整工具栏大小
    tb->setIconSize(QSize(16, 16));
    //向工具栏添加快捷项
    ret = ret && initFileToolItem(tb);
    return ret;
}
//菜单栏 - >下拉菜单组File(&F) -> 菜单组项子项对象
bool MainWindow::initFileMenu(QMenuBar* mb)
{
    //创建 文件 下拉菜单组对象
    QMenu* menu = new QMenu("File(&F)");
    bool ret = (menu != NULL);
    if( ret )
    {
        //创建菜单项子项对象
        QAction* action = NULL;
        //创建 下拉菜单项子项New  参数:下拉菜单项子项 对象,菜单项标题New(&N),快捷键Qt::CTRL + Qt::Key_N
        ret = ret && makeAction(action, "New(&N)", Qt::CTRL + Qt::Key_N);
        if( ret )
        {
            menu->addAction(action);
        }
        //创建 下拉菜单项子项Open  参数:下拉菜单项子项 对象,菜单项标题Open(&O),快捷键Qt::CTRL + Qt::Key_N
        ret = ret && makeAction(action, "Open(&O)...", Qt::CTRL + Qt::Key_O);
        if( ret )
        {
            menu->addAction(action);
        }
        //创建 下拉菜单项子项Save 参数:下拉菜单项子项 对象,菜单项标题Save(&S),快捷键Qt::CTRL + Qt::Key_N
        ret = ret && makeAction(action, "Save(&S)", Qt::CTRL + Qt::Key_S);
        if( ret )
        {
            menu->addAction(action);
        }
        //创建 下拉菜单项子项Save As 参数:下拉菜单项子项 对象,菜单项标题Save As(&A),快捷键Qt::CTRL + Qt::Key_N
        ret = ret && makeAction(action, "Save As(&A)...", 0);
        if( ret )
        {
            menu->addAction(action);
        }
        menu->addSeparator();
        //创建 下拉菜单项子项Print 参数:下拉菜单项子项 对象,菜单项标题Print,快捷键Qt::CTRL + Qt::Key_N
        ret = ret && makeAction(action, "Print(&P)...", Qt::CTRL + Qt::Key_P);
        if( ret )
        {
            menu->addAction(action);
        }
        menu->addSeparator();
        //创建 下拉菜单项子项Exit 参数:下拉菜单项子项 对象,菜单项标题Exit(&X),快捷键Qt::CTRL + Qt::Key_N
        ret = ret && makeAction(action, "Exit(&X)", 0);
        if( ret )
        {
            menu->addAction(action);
        }
    }
    if( ret )
    {
        mb->addMenu(menu);
    }
    else
    {
        delete menu;
    }
    return ret;
}
//菜单栏 - >下拉菜单组Edit(&F) -> 菜单组项子项对象
bool MainWindow::initEditMenu(QMenuBar* mb)
{
    QMenu* menu = new QMenu("Edit(&E)");
    bool ret = (menu != NULL);
    if( ret )
    {
        QAction* action = NULL;
        //创建 下拉菜单项子项Undo 参数:下拉菜单项子项 对象,菜单项标题Undo,快捷键Qt::CTRL + Qt::Key_Z
        ret = ret && makeAction(action, "Undo(&U)", Qt::CTRL + Qt::Key_Z);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Redo(&R)...", Qt::CTRL + Qt::Key_Y);
        if( ret )
        {
            menu->addAction(action);
        }
        menu->addSeparator();
        ret = ret && makeAction(action, "Cut(&T)", Qt::CTRL + Qt::Key_X);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Copy(&C)...", Qt::CTRL + Qt::Key_C);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Paste(&P)...", Qt::CTRL + Qt::Key_V);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Delete(&L)", Qt::Key_Delete);
        if( ret )
        {
            menu->addAction(action);
        }
        menu->addSeparator();
        ret = ret && makeAction(action, "Find(&F)...", Qt::CTRL + Qt::Key_F);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Replace(&R)...", Qt::CTRL + Qt::Key_H);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Goto(&G)...", Qt::CTRL + Qt::Key_G);
        if( ret )
        {
            menu->addAction(action);
        }
        menu->addSeparator();
        ret = ret && makeAction(action, "Select All(&A)", Qt::CTRL + Qt::Key_A);
        if( ret )
        {
            menu->addAction(action);
        }
    }
    if( ret )
    {
        mb->addMenu(menu);
    }
    else
    {
        delete menu;
    }
    return ret;
}
//菜单栏 - >下拉菜单组Format(&O) -> 菜单组项子项对象
bool MainWindow::initFormatMenu(QMenuBar* mb)
{
    QMenu* menu = new QMenu("Format(&O)");
    bool ret = (menu != NULL);
    if( ret )
    {
        QAction* action = NULL;
        ret = ret && makeAction(action, "Auto Wrap(&W)", 0);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Font(&F)...", 0);
        if( ret )
        {
            menu->addAction(action);
        }
    }
    if( ret )
    {
        mb->addMenu(menu);
    }
    else
    {
        delete menu;
    }
    return ret;
}
//菜单栏 - >下拉菜单组View(&V) -> 菜单组项子项对象
bool MainWindow::initViewMenu(QMenuBar* mb)
{
    QMenu* menu = new QMenu("View(&V)");
    bool ret = (menu != NULL);
    if( ret )
    {
        QAction* action = NULL;
        ret = ret && makeAction(action, "Tool Bar(&T)", 0);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "Status Bar(&S)", 0);
        if( ret )
        {
            menu->addAction(action);
        }
    }
    if( ret )
    {
        mb->addMenu(menu);
    }
    else
    {
        delete menu;
    }
    return ret;
}
//菜单栏 - >下拉菜单组Help(&H) -> 菜单组项子项对象
bool MainWindow::initHelpMenu(QMenuBar* mb)
{
    QMenu* menu = new QMenu("Help(&H)");
    bool ret = (menu != NULL);
    if( ret )
    {
        QAction* action = NULL;
        ret = ret && makeAction(action, "User Manual", 0);
        if( ret )
        {
            menu->addAction(action);
        }
        ret = ret && makeAction(action, "About NotePad...", 0);
        if( ret )
        {
            menu->addAction(action);
        }
    }
    if( ret )
    {
        mb->addMenu(menu);
    }
    else
    {
        delete menu;
    }
    return ret;
}
//向工具栏添加快捷项
bool MainWindow::initFileToolItem(QToolBar* tb)
{
    bool ret = true;
    QAction* action = NULL;
   //makeAction重载2 参数:工具栏快捷项 对象,快捷项标题,快捷键图标路径
    ret = ret && makeAction(action, "New", ":/res/pic/new.png");
    if( ret )
    {
        tb->addAction(action);
    }
    ret = ret && makeAction(action, "Open", ":/res/pic/open.png");
    if( ret )
    {
        tb->addAction(action);
    }
    return ret;
}
//makeAction 重载1  参数:下拉菜单项子项 对象,菜单项标题,快捷键
bool MainWindow::makeAction(QAction*& action, QString text, int key)
{
    bool ret = true;
    //创建 下拉菜单项子项 对象
    action = new QAction(text, NULL);
    if( action != NULL )
    {
        //设置快捷键
        action->setShortcut(QKeySequence(key));
    }
    else
    {
        ret = false;
    }
    return ret;
}
//makeAction 重载2  参数:工具栏快捷项 对象,快捷项标题,快捷键图标路径
bool MainWindow::makeAction(QAction*& action, QString tip, QString icon)
{
    bool ret = true;
    action = new QAction("", NULL);
    if( action != NULL )
    {
        //设置提示的标签
        action->setToolTip(tip);
        //设置图标
        action->setIcon(QIcon(icon));
    }
    else
    {
        ret = false;
    }
    return ret;
}
MainWindow::~MainWindow()
{
}

main.cpp

#include <QtGui/QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow* w = MainWindow::NewInstance();
    int ret = -1;
    if( w != NULL )
    {
        w->show();
        ret = a.exec();
    }
    delete w;
    return ret;
}

在这里插入图片描述

Qt无边框窗口模仿windows原生窗口桌面边缘移动动画 无边框窗口在移动到桌面边缘时不会自动全屏或者半屏,网上有些资料能实现全屏或者半屏,但是窗口变化过程中没有动画。所以我想实践下能不能实现windows原生的效果。 立即下载

相关推荐

别再手动算LLC了!用Mathcad 15分钟搞定谐振参数与增益曲线(附已验证产品案例)

本文详细介绍了如何利用Mathcad在15分钟内高效完成LLC谐振变换器的参数计算与增益曲线绘制。通过对比传统工具,突出Mathcad在自然数学表达、实时单位换算和动态参数关联方面的独特优势,帮助电源工程师大幅提升设计效率。文章还提供了已验证的产品案例和实用模板,助力工程师快速掌握谐振参数优化技巧。

weixin_42548888的博客 548

Qt 窗口设置自定义标题栏(隐藏系统标题栏)

在使用Qt制作软件时,为了追求界面美观或者软件整体布局的协调性,通常我们会希望修改程序自带的系统标题栏,但是我找了好久,都没有找到直接修改系统标题栏样式的方法,大多数都是通过去除系统自带边框和标题栏,自己设计一个自定义的标题栏。三、由于设置了窗口透明,第二步中所设的widget的边框,就可以近似看作软件的边框,这样设置widget的qss样式表中的圆角属性,就可以实现窗口圆角了。一、设置窗口背景透明。

weixin_58125846的博客 4961

通达信大单资金实时监控与播报插件:股票分析的实用利器——大红球

本文介绍了一款专为通达信软件设计的大单资金实时监控与播报插件,该插件以其傻瓜式操作和入门级特性在股民中广受欢迎。插件核心功能包括与通达信版面的无缝联动、大单金额范围的自定义设置、资金流动的可视化展示以及智能声音播报等。其技术架构基于本地网页形式,自带分时图显示功能,数据实时更新且无需L2账户,承诺永久免费升级。插件通过红绿球的大小和颜色直观展示资金规模与买卖方向,顶端全局统计功能提供宏观资金流动分析。尽管插件数据具有较高参考价值,但投资者仍需结合其他因素进行综合判断。插件界面可自适应调整,提供个性化使用体验

guleba的博客 6596

Qt 29 主窗口中的状态栏 模仿Windows文本编辑器界面 菜单栏+工具栏+状态栏

实验:工具栏 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui/QMainWindow> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); }; #endif // MAINWINDOW_H MainWin...

奶牛养殖场小马 289

模型性能评估之 Friedman 检验与 Nemenyi 后续检验

前言 当我们提出一种算法,需要知道我们的算法和现在已有的算法相比,性能是否更优的时候,就需要用到模型性能评估的方法。本篇博客介绍一种模型性能评估的方法:Friedman 检验与 Nemenyi 后续检验。 该方法的特点是:可以进行多个算法的比较。下面看看具体的使用: 具体使用 1. 计算序值 假定我们用 D1D_1D1​、D2D_2D2​ 、D3D_3D3​ 和 D4D_4D4​ 四个数据集对算法 AAA、BBB、CCC 进行比较。首先需要得到每个算法在每个数据集上的测试结果,可以是准确率,也可以是均方误差

蕾欧娜与26的博客 1万+

基于Simulink的电气弹簧ES稳压控制模型仿真

在本文中,我们将使用Simulink建立一个ES稳压控制系统的模型,并通过仿真验证其性能。接下来,我们配置了各个组件的参数,包括电源电压、负载电流以及ES和控制器的传递函数。通过调整模型中的参数和控制算法,我们可以进一步优化系统的性能并实现更好的电压稳定调节。该系统通过对电力系统中的ES进行控制,调整其阻尼特性,以实现对电压的稳定调节。例如,我们可以设置电源的电压值、负载的电流值,以及控制器的参数(如PID控制器的比例、积分和微分增益)。反馈控制可以根据测量值来调整控制器的输出,从而实现对电压的稳定调节。

DevProZ的博客 421

qt开发环境 - 丁林松教程,模仿win的运行窗口

qt

Ning的博客 511

AI 编程工具面试题(Claude Code、Codex 等)基础篇(一)

文章摘要: 本文整理了20道AI编程工具基础面试题,涵盖Claude Code、Codex CLI、GitHub Copilot等主流工具的核心概念与实操技巧。内容分为工具分类(代码补全/对话式/自主代理)、安装配置(静默部署/API管理)、关键命令(上下文加载/token监控)、调试策略(错误处理/提示优化)及对比选型(Tabnine vs Copilot)。重点解析了终端工具与模型能力的差异,并针对实际场景(如长代码生成/私有化部署)提供解决方案。附追问环节,深入探讨工具边界问题(如上下文溢出处理)和成

篮球界最会写bug的人;程序猿中打球最菜的人。 337

QT添加菜单栏-工具栏-中心区域-状态栏-dock 示范

QT添加菜单栏-工具栏-中心区域-状态栏-dock 示范。

Txwtech 4242

AI量化学习入门指南:从零开始掌握人工智能投资策略

量化投资:利用数学模型和计算机算法进行投资决策的方法算法交易:自动执行预定义交易规则的系统机器学习:让计算机从数据中学习并改进的技术回测:用历史数据检验交易策略表现的过程特征工程:将原始数据转化为模型可理解的输入过拟合:模型过度适应历史数据,导致未来表现不佳夏普比率:衡量单位风险所获得的超额收益AI量化投资不仅仅是技术的应用,更是一种理性、系统化的投资哲学。它不追求预测市场的每一个拐点,而是通过概率思维和风险管理,在不确定性的市场中寻找统计优势。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1131

即插即用系列(代码实践) | CVPR 2025 FDConv:频域动态卷积,打破密集预测任务的参数效率瓶颈

本文提取自 CVPR 2025 的最新底层算子革新论文《Frequency Dynamic Convolution for Dense Image Prediction》。近年来,动态卷积(Dynamic Convolution)通过融合多个并行卷积核极大地提升了模型性能,但研究表明:这些并行卷积核在频域上的响应高度相似,导致了极其严重的参数浪费,且缺乏对不同频率特征的自适应能力。本文复现了该网络的核心架构——FDConv(频率动态卷积)。该方案创造性地在傅里叶域(Fourier Domain)中学习固定参

分享顶会顶刊论文即插即用模块 112

Qt,C++ 仿MAC桌面程序,DOCKBAR

山前大桥下,有一个傻瓜。一枚小学生,幽居荒山中。养了一群狗,还有一只猫。喜欢搞编程,缺钱打零工。数理史皆通,法文记心中。下厨会做饭,挥毫能舞文。 原本是在做mac Osx 的dockbar,在做测试的过程中心血来潮想试试看看效果如何,于是就有了下面的结果。 后来转念一想,可以在windows上做一个和MacOSX一样的桌面程序,设置windows任务栏隐藏即可完美模拟出MAC效果。但遗憾的是时间不允许,后面有时间再慢慢完善。 主要工作是DockBar ,支持绘制Dockbar背景...

wastelandboy的博客 2696

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进YOLOv11模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带来的结构可以让大家自行调节网络结构大小,同时能够达到一定的轻量化效果,为什么发BiFPN呢因为它算是YOLO系列改进中的常青树了,大家可以借鉴它的双向特征思想来创新自己的Neck结构本文的BiFPN通过yaml文件配置可以让大家自行调配其结构。

Snu77的博客 9103

【开源软件移植】鸿蒙 PC:QElectroTech 从零编译到鸿蒙pc运行的 10 个阶段

本文详细记录了将KDE系电气原理图编辑器QElectroTech移植到鸿蒙PC的全过程。项目面临三大技术挑战:KF5框架依赖、sqlite3 C API直接调用和多版本moc兼容性问题。通过分析源码结构(600+源文件、60+UI表单、1.7万行资源文件),作者采用分阶段策略:首先配置Qt-OHOS交叉编译环境,补全缺失子模块;然后针对KF5依赖启用BUILD_WITHOUT_KF5编译选项;最后解决sqlite3和moc兼容性问题。该项目为后续KDE应用移植鸿蒙提供了完整参考方案,所有代码已在AtomGi

一键难忘的博客 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

目标--实现类似windows 任务管理界面

实现 进程和性能两个页面---借此熟悉QT的相关控件及语法、C++的语法等等。

平面到立体 316

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Qt文本编辑器开发------纯代码实现

在Qt的学习过程中浏览优快云时,发现关于基本代码实现功能开发的文章很少,经常需要浏览很多的文章才能解决问题,于是便萌发写该篇文章的想法。

qq_53380078的博客 2431

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

QT文本编辑器(QMainwindow版)超详细

昨天一天都在编写QT文本编辑器程序,编写的过程中发现了很多问题,但是在编写的时候都比较难以实现,在网上搜索的消息也比较零散。这里总结一下QT文本编辑器的思路以及一些编写过程。文本编辑器编写思路:文本编辑器首先是基于一个QMainWindow的框架,个框架的主题结构是菜单栏(Menu Bar)、工具栏(Toolbars)、停靠窗口(Dock Widgets)、状态栏(Status Bar)和中央窗口(Central Widget)这五个窗口共同组成窗口,其中停靠窗口不能算是QMianWindow里面的窗口,但

ironjam的博客 8687

QT 创建文本编辑器界面(2)

QT 创建文本编辑器界面(2)

weixin_48105048的博客 559

Qt学习之QMainWindow的使用(使用菜单栏、工具栏、状态栏等设计一个文本编辑器界面)源码及效果图

使用菜单栏、工具栏、状态栏、铆接部件、中心部件等设计一个简易文本编辑器界面。 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars ) 、多个铆接部件( dock widgets ) 、一个状态栏( status bar ) 及一个中心部件 ( central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。

似末的博客 1万+

QT基础知识学习(二)——制作一个简单菜单界面

一个简单的小菜单界面,希望每天都有一点小进步。

m0_64182150的博客 2152

Qt界面外观之一:Qt风格与特殊效果窗体

一个完善的应用程序不仅应该有实用的功能,还要有一个漂亮的外观,这样才能使应用程序更加友好,更加吸引用户。作为一个跨平台的UI开发框架,Qt提供了强大而灵活的界面外观设计机制。这一章将学习在Qt中设计应用程序外观的相关知识,会对Qt风格QStyle和调色板QPalette进行简单介绍,以及介绍不规则窗体和透明窗体的实现方法。 一、Qt风格 Qt中的各种风格是一组继承自QStyle的类。QStyl...

weixin_30594001的博客 1121

qt多级菜单_Qt高仿电脑管家界面(二):点击按钮弹出菜单

电脑管家的 Qt原有的菜单功能,无法直接实现,还有电脑管家的菜单位置刚好在按钮的中心位置,其实这个用Qt也可以实现,获取窗口坐标,根据按钮的位置弹出菜单。下面给出在点击按钮时弹出菜单的代码:void Widget::on_btnSet_clicked(){QList acList;QAction *workMode = new QAction(tr("工作模式"), this);QAction *...

weixin_32678427的博客 815

qt 鼠标悬停显示菜单_微软展示Windows 10全新开始菜单

微软正在全力为Windows 10打造新的开始菜单,而现在他们的官方Twitter账号上,又展示了一个片段,着重强调了Windows 10开始菜单的演变。从这段演变中可以看到,微软展示了一个关于重新设计的开始菜单的图像,并表示计划在即将到来的Windows 10功能更新中引入重新设计的开始菜单。新的开始菜单与当前版本的Windows 10中使用的开始菜单有很大的不同,值得注意的变化包括更广泛的应用...

weixin_39550258的博客 248

Qt实现窗体无边框,并且点击windows任务栏图标可以最小化

Qt中对于窗口边框的设置一般用到setWindowFlags函数。 void setWindowFlags(Qt::WindowFlags type) Qt::Widget This is the default type for QWidget. Widgets of this type are child widgets if they have a parent,

开启技术人生 6197

QT:修改Windows下程序任务栏图标

QT中通过使用rc文件来修改Windows下程序任务栏图标: 新建*.rc文件,如res.rc 在res.rc文件中添加代码:IDI_ICON1 ICON “logo.ico” logo.ico为自己需要在任务栏中显示的图标 修改工程的*.pro文件,在底部添加代码:RC_FILE += res.rc *使用vs编译运行后会发现还是没有变化,即使是在工程底下vs也不会去引用。解决办法是

善良的流氓的专栏 3090

Qt写的一个基于纯代码的Windows风格窗体实现

一个基于纯代码的Windows风格窗体实现

qq_40097567的博客 800
上一篇: Linux 中的经典宏 container_of(ptr, type, member)剖析
下一篇: Qt 29 主窗口中的状态栏 模仿Windows文本编辑器界面 菜单栏+工具栏+状态栏
Ma浩然
博客等级 码龄9年 1万+粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma浩然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值