精华内容
下载资源
问答
  • QT 自定义菜单栏

    万次阅读 2018-10-10 10:28:04
    dialog却没有,因此mainwindow可以直接在ui文件中进行添加,而dialog只能通过代码进行自定义菜单设置 本文主要介绍menubar和statusbar的自定义添加 mainwindow的UI界面 自定义menubar和statusbar 什么...

    dialog和mainwindow

    mainwindow的ui文件是默认有menubar,maintoolbar和statusbar的
    dialog却没有,因此mainwindow可以直接在ui文件中进行添加,而dialog只能通过代码进行自定义菜单设置
    本文主要介绍menubar和statusbar的自定义添加
    在这里插入图片描述
    在这里插入图片描述
    mainwindow的UI界面
    在这里插入图片描述

    自定义menubar和statusbar

    什么是菜单栏和状态栏

    以下图界面为例,图片上方,组织,包含到库中,新建文件夹构成的部分就是菜单栏menubar,图片下方31个对象就是状态栏statusbar
    在这里插入图片描述
    菜单栏:
    在这里插入图片描述
    状态栏:
    在这里插入图片描述

    代码

    主要涉及到4个类:QMenuBar、QMenu、QAction、QStatusBar

    • QMenuBar:窗口的菜单栏,在此基础上添加不同的QMenu和QAction
    • QMenu:菜单,可以显示文本和图标,但是并不负责执行操作
    • QAction: 负责执行操作的部件
    • QStatusBar:负责提示的状态栏,通常在窗口最下侧

    话不多说,上代码!

    //dlg.h
    #include <QMenu>
    #include <QMenuBar>
    #include <QStatusBar>
    public:
        QMenu* menu[10];
        QAction* act[10];
        QMenuBar* menuBar ;
        QStatusBar* statusBar;
        
    //dlg.cpp
    #include <QDebug>
    
    Dialog::Dialog(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Dialog)
    {
        ui->setupUi(this);
    
        statusBar = new QStatusBar(this);
        menuBar = new QMenuBar(this);
    
        act[0] = new QAction("新建",this);
        act[0]->setShortcut(Qt::CTRL | Qt::Key_N );
    
        act[1] = new QAction("打开",this);
        act[1]->setShortcut(Qt::CTRL | Qt::Key_O );
    
        menu[0] = new QMenu("文件(&F)");//&F表示有Alt + F的快捷键
        menu[0]->addAction(act[0]);
        menu[0]->addAction(act[1]);
        menu[0]->addSeparator();//添加分割线
        menu[0]->addAction("查看");
        menu[0]->addAction("工具");
    
        menu[1] = new QMenu("编辑(&E)");
        menu[1]->addAction("剪切");//没有快捷键等特殊需求,可以跳过新建act直接这样用
        menu[1]->addAction("粘贴");
    
        act[2] = new QAction("显示窗口",this);
        act[2]->setCheckable(true);//设置checkbox
    
        menu[2] = new QMenu("窗口");
        menu[2]->addAction(act[2]);
        menu[2]->addAction("关闭窗口");
    
        menu[1]->addMenu(menu[2]);//添加菜单
    
        menuBar->setGeometry(0,0,this->width(),23);//从左上角坐标开始,设置宽度,高度;设置菜单栏位置
        menuBar->addMenu(menu[0]);
        menuBar->addMenu(menu[1]);
    
        connect(menuBar,SIGNAL(triggered(QAction*)),this,SLOT(trigerMenu(QAction*)));//对所有act点击事件有效,快捷键事件无效
        connect(act[0] ,SIGNAL(triggered()),this,SLOT(act_new()));//对act[0]事件(点击,快捷键)有效
    
        statusBar->setGeometry(2,this->height()-30,this->width(),30);//设置状态栏位置
    
    }
    
    //act的点击事件
    void Dialog::trigerMenu(QAction *act)
    {
        if(act->text() == "新建")
        {
            qDebug()<<"新建被按下";
        }
        if(act->text() == "打开")
        {
            qDebug()<<"打开被按下";
            statusBar->showMessage("不可查看当前数据",5000);//状态栏显示5s
        }
        if(act->text() == "剪切")
        {
            qDebug()<<"剪切被按下";
        }
    
    }
    
    //新建快捷键||新建点击事件
    void Dialog::act_new()
    {
        qDebug()<<"新建快捷键||新建点击事件";
    }
    
    

    在这里插入图片描述
    显示窗口有checkbox,可进行打勾选中
    在这里插入图片描述
    通过act的text可进行判断点击的是哪个act
    例如点击了打开,会打印“打开被按下字样”,同时状态栏会出现5s的提示
    在这里插入图片描述
    如果使用Ctrl+O的快捷键是不会出现反应的,因为没有写act[1]的信号槽,而点击“新建”,trigerMenu(QAction *act)和act_new()两个函数都会触发,先触发act_new()再触发trigerMenu(QAction *act),但如果使用快捷键Ctrl+N,就只会触发act_new()
    在这里插入图片描述

    展开全文
  • 实现方式其实挺简单,就是自己重构一个菜单栏和快捷方式栏 新建myMenu类继承QMenuBar 自定义QStatusBar myMenu里传入显示widget,新建的菜单选项绑定到传入父widget QStatusBar也一样 详细代码如下 最下边注释的是...

    想做一个类似海康mvs软件抬头这样的效果
    在这里插入图片描述

    自己画的结果
    在这里插入图片描述
    实现方式其实挺简单,就是自己重构一个菜单栏和快捷方式栏
    新建myMenu类继承QMenuBar
    自定义QStatusBar
    myMenu里传入显示widget,新建的菜单选项绑定到传入父widget
    QStatusBar也一样
    详细代码如下
    最下边注释的是状态栏,有需要可以添加
    需要把frmtcpclient.h换成自己的mainwidget,命名是去年刚学习时候写的,惨不忍睹
    串口网口用的刘典武大神现成的,需要的话自己去找下http://www.qtcn.org/bbs/u.php?uid=110085

    做出类似海康那个效果还需要对照着画个ui,layout_titlemenu就是下图中那个红色的框,中间可以在加一个直线

        this->my_menu_ = new myMenu(this, this);
        ui->layout_titlemenu->addWidget(my_menu_);
        ui->layout_titlemenu->addWidget(my_menu_->I_ToolBar);
    

    在这里插入图片描述

    #ifndef MYSCROLLAREA_H
    #define MYSCROLLAREA_H
    
    // 01frame includes
    #include "app.h"
    
    // 02control includes
    #include "frmtcpclient.h"
    #include "settingsdialog.h"
    #include "frmtcpserver.h"
    #include "frmudpserver.h"
    
    
    class FormTitle;
    
    class myMenu : public QMenuBar {
        Q_OBJECT
      public:
        myMenu(QWidget *parent, FormTitle *p);
        ~myMenu();
        QToolBar *I_ToolBar;
    
      public slots :
    
        // 界面目录
        void File_open();		// 打开
        void File_save();		// 保存
        void File_open_database();		// 另存为
        void Help_info();		// 帮助
        void About_info();//关于
        void Act_edit_screenshot();//截图
        void qappclose();//退出
        void qappfullScreen();//全屏
        void qappmaxScreen();//退出全屏
        void qappNet();//打开网络
        void qappCom();//打开串口
    
      private:
        FormTitle *I_MainWindow;
    
        QStatusBar *T_StatusBa;
        QString currentPath;	// 当前图像路径
        frmTcpClient *I_frmTcpClient;
        frmTcpServer *I_frmTcpServer;
        frmUdpServer *I_frmUdpServer;
        QSerialPort *m_serialPort; //串口类
        SettingsDialog *com_Settings;
    
        void initT_ToolBar();
        void Menu_File();		// 文件菜单
        void Menu_Edit();		// 编辑菜单
        void Menu_Help();		   // 帮助菜单
    
    };
    
    
    #endif // MYSCROLLAREA_H
    
    // 01frame includes
    #include "myMenu.h"
    
    // 02control includes
    #include "screenwidget.h"
    
    // 04ui includes
    #include "formtitle.h"
    
    myMenu::myMenu(QWidget *parent, FormTitle *p)
        : QMenuBar(parent) {
        I_MainWindow = static_cast<FormTitle *>(p) ;
        initT_ToolBar();
        Menu_File();
        Menu_Edit();
        Menu_Help();
        I_frmTcpClient = new frmTcpClient();
        I_frmTcpServer = new frmTcpServer();
        I_frmUdpServer = new frmUdpServer();
        com_Settings  = new SettingsDialog();
    
        this->setFixedWidth(200);
        QStringList qss;
        qss.append(QString("QMenuBar"
                           "{background:transparent;"
                           "border: 0px solid gray;}"));
        qss.append(QString("QMenuBar::item"
                           "{background:transparent;"
                           "border: 0px solid gray;}"));
        qss.append(QString("QMenuBar::item::selected"
                           "{background-color: rgb(65, 65, 69);}"));
        this->setStyleSheet(qss.join(""));
    }
    myMenu::~myMenu() {
    }
    //文件菜单
    void myMenu::Menu_File() {
        QAction *Act_file_new = new QAction(QIcon(":/Image/file/New.png"),
                                            tr("新建"), this);
        Act_file_new->setShortcut(Qt::Key_Control & Qt::Key_I);
        Act_file_new->setStatusTip(tr("新建"));
    
        QAction *Act_file_open = new QAction(QIcon(":/Image/file/Open.png"),
                                             tr("打开"), this);
        Act_file_open->setShortcuts(QKeySequence::Open);
        Act_file_open->setStatusTip(tr("打开"));
        connect(Act_file_open, SIGNAL(triggered()),
                I_MainWindow, SIGNAL(SingalOpenFileOut()));
    
        QAction *Act_file_save = new QAction(QIcon(":/Image/file/Save.png"),
                                             tr("保存"), this);
        Act_file_save->setShortcuts(QKeySequence::Save);
        Act_file_save->setStatusTip(tr("保存"));
        connect(Act_file_save, SIGNAL(triggered()),
                I_MainWindow, SIGNAL(SingalSaveFileOut()));
    
        QAction *Act_file_saveas = new QAction(QIcon(":/Image/file/SaveAs.png"),
                                               tr("另存为"), this);
        Act_file_new->setShortcut(Qt::Key_Control & Qt::Key_D);
        Act_file_saveas->setStatusTip(tr("另存为"));
        connect(Act_file_saveas, SIGNAL(triggered()), this, SLOT(File_open_database()));
    
    
        QAction *Act_file_close = new QAction(QIcon(":/Image/file/Close.png"),
                                              tr("关闭"), this);
        Act_file_close->setShortcuts(QKeySequence::Close);
        Act_file_close->setStatusTip(tr("关闭软件"));
    
    
    
        QMenu *file = addMenu(tr("文件"));
        file->addAction(Act_file_new);
        file->addAction(Act_file_open);
        file->addAction(Act_file_save);
        file->addAction(Act_file_saveas);
        file->addSeparator();						//添加一个分割器
        file->addAction(Act_file_close);
    
        I_ToolBar->addAction(Act_file_open);
        I_ToolBar->addAction(Act_file_save);
    
    }
    //编辑菜单
    void myMenu::Menu_Edit() {
    
        QAction *Act_edit_full = new QAction(QIcon(":/Image/edit/Edit_Full.png"),
                                             tr("全屏显示"), this);
        Act_edit_full->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_F));
        Act_edit_full->setStatusTip(tr("全屏显示"));
        connect(Act_edit_full, SIGNAL(triggered()), this, SLOT(qappfullScreen()));
    
        QAction *Act_edit_back = new QAction(QIcon(":/Image/edit/Edit_Max.png"),
                                             tr("退出全屏"), this);
        Act_edit_back->setShortcut(QKeySequence(Qt::Key_Escape));
        connect(Act_edit_back, SIGNAL(triggered()), this, SLOT(qappmaxScreen()));
        Act_edit_back->setStatusTip(tr("退出全屏"));
    
        QAction *Act_edit_screenshot = new QAction(QIcon(":/Image/btndo2.png"),
                tr("截图"), this);
        Act_edit_screenshot->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
        connect(Act_edit_screenshot, SIGNAL(triggered()), this, SLOT(Act_edit_screenshot()));
        Act_edit_screenshot->setStatusTip(tr("截图"));
    
    
        QAction *Act_edit_net1 = new QAction(QIcon(""), tr("打开网络——tcp服务器"), this);
        connect(Act_edit_net1, SIGNAL(triggered()), this, SLOT(qappNet()));
        QAction *Act_edit_net2 = new QAction(QIcon(""), tr("打开网络——tcp客户端"), this);
        connect(Act_edit_net2, SIGNAL(triggered()), this, SLOT(qappNet()));
        QAction *Act_edit_net3 = new QAction(QIcon(""), tr("打开网络——udp客户端"), this);
        connect(Act_edit_net3, SIGNAL(triggered()), this, SLOT(qappNet()));
        Act_edit_net1->setObjectName("Act_edit_net1");
        Act_edit_net2->setObjectName("Act_edit_net2");
        Act_edit_net3->setObjectName("Act_edit_net3");
        Act_edit_net1->setStatusTip(tr("打开网络——tcp服务器"));
        Act_edit_net2->setStatusTip(tr("打开网络——tcp客户端"));
        Act_edit_net3->setStatusTip(tr("打开网络——udp客户端"));
    
    
        QAction *Act_edit_com = new QAction(QIcon(""), tr("打开端口"), this);
        Act_edit_com->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
        connect(Act_edit_com, SIGNAL(triggered()), this, SLOT(qappCom()));
        Act_edit_com->setStatusTip(tr("打开端口"));
    
    
    
        QMenu *Act_edit_net = new QMenu(tr("打开网络"));
        Act_edit_net->addAction(Act_edit_net1);
        Act_edit_net->addAction(Act_edit_net2);
        Act_edit_net->addAction(Act_edit_net3);
        Act_edit_net->setStatusTip(tr("打开网络"));
    
        QMenu *edit = addMenu(tr("编辑"));
        edit->addAction(Act_edit_full);
        edit->addAction(Act_edit_back);
        edit->addAction(Act_edit_screenshot);
        edit->addSeparator();
        edit->addMenu(Act_edit_net);
        edit->addAction(Act_edit_com);
    
    
        I_ToolBar->addAction(Act_edit_screenshot);
        I_ToolBar->insertSeparator(Act_edit_screenshot);
    }
    
    //帮助菜单
    void myMenu::Menu_Help() {
        QAction *Act_about_info =
            new QAction(QIcon(":/ImageProcessing/Image/help/Help_Info.png"),
                        tr("关于"), this);
        connect(Act_about_info, SIGNAL(triggered()), this, SLOT(About_info()));
        Act_about_info->setStatusTip(tr("关于"));
    
        QAction *Act_help_info =
            new QAction(QIcon(":/ImageProcessing/Image/help/Help_Info.png"),
                        tr("帮助"), this);
        connect(Act_help_info, SIGNAL(triggered()), this, SLOT(Help_info()));
        Act_help_info->setStatusTip(tr("帮助"));
        Act_help_info->setStatusTip(tr("帮助"));
    
    
        QMenu *help = addMenu(tr("帮助"));
        help->addAction(Act_about_info);
        help->addAction(Act_help_info);
    
    
    }
    
    
    // -------------------槽函数-------------------------------------------
    void myMenu::Act_edit_screenshot() { //截屏
        ScreenWidget::Instance()->showFullScreen();
    }
    void myMenu::qappclose() { // 退出
        qApp->quit();
    }
    void myMenu::File_open() {	// 打开图片
        QString path = QFileDialog::getOpenFileName(this,
                       tr("选择图像"), ".",
                       tr("Images(*.jpg *.png *.bmp)"));
        if (path.size() == 0) {
            return;
        }
        QTextCodec *code = QTextCodec::codecForName("GB2312");//解决中文路径问题
        std::string name = code->fromUnicode(path).data();
    
        QUIHelper::showMessageBoxInfo(QString("打开图片路径:%1").arg(path));
        QUIHelper::showMessageBoxQuestion("图片和数据库无法匹配打开失败");
    
    
    }
    void myMenu::File_save() {		// 保存文件
    
    }
    void myMenu::File_open_database() {		// 打开配置文件
        QString path = QFileDialog::getOpenFileName(this,
                       tr("选择图像"), ".",
                       tr("Images(*.ini)"));
        if (path.size() == 0) {
            return;
        }
        QTextCodec *code = QTextCodec::codecForName("GB2312");//解决中文路径问题
        std::string name = code->fromUnicode(path).data();
    
        QUIHelper::showMessageBoxInfo(QString("打开图片路径:%1").arg(path));
        QUIHelper::showMessageBoxQuestion("图片和数据库无法匹配打开失败");
    
    }
    void myMenu::qappfullScreen() { //全屏
        //I_MainWindow->setWindowFlags(Qt::Window);
        I_MainWindow->showFullScreen();
    }
    void myMenu::qappmaxScreen() { //退出全屏
        //I_MainWindow->setWindowFlags(Qt::SubWindow);
        I_MainWindow->showNormal();
    }
    
    void myMenu::qappNet() { //网络
        QString a = sender()->objectName();
        QString b = QUIHelper::getLocalIP();
        if (a == "Act_edit_net1") {
            I_frmTcpClient->setWindowTitle("打开网络——tcp服务器    本机ip:" + b);
            I_frmTcpClient->show();
        } else if (a == "Act_edit_net2") {
            I_frmTcpServer->setWindowTitle("打开网络——tcp客户端    本机ip:" + b);
            I_frmTcpServer->show();
        } else if (a == "Act_edit_net3") {
            I_frmUdpServer->setWindowTitle("打开网络——udp客户端    本机ip:" + b);
            I_frmUdpServer->show();
        }
    }
    
    void myMenu::qappCom() { //打开串口
        com_Settings->show();
    }
    
    void myMenu::initT_ToolBar() {
        I_ToolBar = new QToolBar(tr("工具栏01")) ;
        Qt::ToolBarArea area;
        area = Qt::LeftToolBarArea;//设置停靠位置
        I_ToolBar -> setMovable(true);
    
        QStringList qss;
        qss.append(QString("QToolBar"
                           "{spacing: 25px;}"));
        qss.append(QString("QToolButton"
                           "{background:transparent;"
                           "border: 0px solid gray;}"));
        qss.append(QString("QToolButton::hover"
                           "{background-color: rgb(65, 65, 69);}"));
        qss.append(QString("QToolBar::separator"
                           "{background-color: rgb(25, 25, 25);"
                           "width: 1px;height: 5px;}"));
        I_ToolBar->setStyleSheet(qss.join(""));
        I_ToolBar->setFixedWidth(200);
    }
    
    
    // -------------------帮助-------------------------------------------
    void myMenu::Help_info() {
    
    }
    // -------------------关于-------------------------------------------
    void myMenu::About_info() {
    
    }
    
    /*
     * void myMenu::initT_StatusBa() {
        T_StatusBa = new  QStatusBar;
        T_StatusBa->showMessage("欢迎使用!", 10000);
        QLabel *permanent = new QLabel(this);
        permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);
        permanent->setText(
            "<a href=\"http://www.arteryflow.com\">XXXXXX有限公司</a>");
        permanent->setTextFormat(Qt::RichText);
        permanent->setOpenExternalLinks(true);
        T_StatusBa->addPermanentWidget(permanent);
        I_MainWindow->setStatusBar(T_StatusBa);
    
    }*/
    
    
    展开全文
  • qt自定义工具,类似word 详见博客:http://blog.csdn.net/caoshangpa/article/details/52239687
  • Qt自定义菜单栏

    千次阅读 2017-07-15 11:22:27
    /****************创建菜单栏目***************/ void createActions();   /****************重写菜单事件函数***************/ void contextMenuEvent(QContextMenuEvent*event);   QMenu *menu; QAction*copy;

    在头文件中加入
    /****************创建菜单栏目***************/
    void createActions();
     
    /****************重写菜单事件函数***************/
    void contextMenuEvent(QContextMenuEvent*event);
     
    QMenu *menu;
    QAction*copy;
    QAction*paste;
    QAction*del;
     
    在源文件中加入
    void MainWindow::createActions()
    {
        menu=new QMenu();          //创建菜单
        copy=new QAction(this);    //菜单栏项目复制
        paste=new QAction(this);   //菜单栏项目粘贴
        del=new QAction(this);     //菜单栏项目删除
        copy->setText(tr("复制")); //菜单栏项目复制
        paste->setText(tr("粘贴"));//菜单栏项目粘贴
        del->setText(tr("删除"));  //菜单栏项目删除
     
     
    }
     
    void MainWindow::contextMenuEvent(QContextMenuEvent *event)
    {
        menu->clear();             //清空原有菜单栏项目
        menu->addAction(copy);     //加菜单栏项目复制
        menu->addAction(paste);    //加菜单栏项目粘贴
        menu->addAction(del);      //加菜单栏项目删除
        menu->exec(QCursor::pos());//在鼠标点击时出现
        event->accept();           //事件响应
     
    }
     
    运行结果如下:




    展开全文
  • QT样式(包含:系统托盘,独立标题自定义菜单,窗口自由移动,样式效果)
  • 自定义菜单栏 先来看下菜单栏是个啥 对于日常生活中见到的应用程序而言许多都是基于主窗口的,主窗口包括了菜单栏,工具栏,状态栏和中心区域等。 对于Qt来说工具栏上可以添加任意的部件,那菜单栏可以吗,是否也...

    自定义菜单栏

    先来看下菜单栏是个啥
    在这里插入图片描述
    对于日常生活中见到的应用程序而言许多都是基于主窗口的,主窗口包括了菜单栏,工具栏,状态栏和中心区域等。


    对于Qt来说工具栏上可以添加任意的部件,那菜单栏可以吗,是否也可以使用其他的部件呢,当然是可以的
    我们这里要实现的自定义菜单栏是,通过在lineEdit这个部件中插入文本,然后通过回车把他的内容输入到下面中心区域的textEdit部件中
    在这里插入图片描述

    操作流程:
    ①定义一个新的C++类使其继承自QWidgetAction,类型信息选择继承自QObject(因为QWidgetAction继承自QAction,而QAction又继承自QObject
    并且在其中重新实现createWidget函数创建一个新的部件(用分裂器来装载返回)
    这里的新部件就是QLabel+QLineEdit

    ②设置相应的信号与槽

    ③在MainWindow类中对构造函数进行代码编辑


    看代码:
    对应①②
    myactionMenu.h

    #include<QWidgetAction>
    #include<QWidget>
    #include<QLineEdit>
    class myActionMenu : public QWidgetAction
    {
         Q_OBJECT
    public:
        myActionMenu(QObject* parent=0);//类型信息选择继承自QObject
    protected:
        QWidget* createWidget(QWidget *parent);
    signals:
        //新建信号用于再按下回车建时,将行编辑器中的内容发射出去
        void getText(const QString& string);
    private slots:
        //新建槽,它用来与行编辑器的按下回车键信号进行关联
        void sendText();
    private:
        //定义行编辑器对象的指针
        QLineEdit* lineEdit;
    };
    
    

    myactionMenu.cpp

    #include "myactionmenu.h"
    #include<QSplitter>
    #include<QLabel>
    myActionMenu::myActionMenu(QObject*parent):QWidgetAction(parent)
    {
        lineEdit=new QLineEdit;
        //关联信号与槽,当焦点处于lineEdit时按下回车,响应sendText槽方法
        connect(lineEdit,SIGNAL(returnPressed()),this,SLOT(sendText()));
    }
    
    QWidget *myActionMenu::createWidget(QWidget *parent)
    {
        //这里使用inherits()函数判断夫不见是否时菜单或者时工具栏
        //如果是,则创建该父部件的子部件,并且返回子部件
        //如果不是直接返回0
        if(parent->inherits("QMenu")||parent->inherits("QToolBar")){
            QSplitter* splitter=new QSplitter(parent);
            QLabel* label=new QLabel;
            label->setText("插入文本");
            splitter->addWidget(label);
            splitter->addWidget(lineEdit);
            return splitter;
        }
        return 0;
    }
    
    void myActionMenu::sendText()
    {
        emit getText(lineEdit->text());//发射信号
        lineEdit->clear();//清空
    }
    
    

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        myActionMenu* action=new myActionMenu;
        QMenu* editMenu=ui->menuBar->addMenu("编辑(&E)");
        editMenu->addAction(action);
        //将action的getText()信号和这里的setText槽进行关联
        connect(action,SIGNAL(getText(QString)),this,SLOT(setText(QString)));
    }
    
    

    最终实现效果:
    在这里插入图片描述

    展开全文
  • VS+Qt 如何实现自定义菜单栏

    千次阅读 2020-03-06 16:52:40
    自定义菜单栏实现 mymenu.h定义槽函数: private slots: void on_actionOpen_triggered(); void on_actionSave_triggered(); void on_actionExit_triggered(); void on_actionMain_triggered(); void on_...
  • 该代码总结了三种QMenu用法,有基本菜单用法,有两种自定义菜单,编译环境是Qt5.9.4+MinGW32+Creator4.5.0编译器,具体的原理讲解可以参考博主博客:...
  • 菜单栏、工具栏、状态栏 主窗口框架拥有自己的布局,包括以下组件: ①菜单栏 菜单栏包含了一个下拉菜单项的列表,这些菜单项通过QAction动作类实现。一个主窗口只能有一个菜单栏。 ②工具栏 工具栏一般用于显示常用...
  • QT 自定义工具

    千次阅读 2018-08-29 16:32:46
    QToolBar类包含函数addWidget(QWidget *widget)和insertWidget(QAction *before, QWidget *widget),说明工具不仅可以addAction,还可以添加已有的或者自定义的widget,这样的话,做成类似word的工具就指日可待...
  • 1、需求分析 在工作中,是不是会有这种需求, 单击一个按钮显示一个窗体,该窗体位置位于...// 菜单栏的移动和显示 axisMenu->move(cursor().pos());   axisMenu->show(); 4、效果显示    
  • 包括实现文件、基本配置文件、和简单的图片,使用Qt模型视图委托方法进行实现树状导航,重要地方都已经加了注释,可以看看我的博客里面介绍了实现
  • QT自定义菜单

    千次阅读 2016-12-10 15:48:42
    QT自定义菜单QT自定义菜单 个人建议 效果图 上代码 下代码 结尾个人建议 自定义, 自定义, 自定义, 顾名思义就是我们自己设计出来效果的菜单, 再如果我们把这个自定义的菜单封装成一个类, 你觉得会不会更好呢, ...
  • Qt Creator plugin动手实践(2)自己动手写qt creator插件,实现自定义工具按钮
  • QMenu和QMenuBar是Qt中的菜单类和菜单栏类,其中,菜单QMenu挂载在菜单栏QMenuBar上。本文主要总结QMenu的三种常用用法,分别为常规用法、继承QWidgetAction自定义菜单项用法、将QMenu当QWidget挂载一个布局用法。 ...
  • qt默认的标题样式让人看着挺尴尬的。为了使界面好看,我们需要重新制作标题qt给了两个隐藏标题的方法: 1:setWindowFlags(Qt::FramelessWindowHint);//生成无边界窗口,无法移动、缩放窗口 2:...
  • QT自定义窗口 自由拖动 自定义标题
  • Qt 自定义导航

    千次下载 热门讨论 2015-01-26 10:56:05
    Qt自定义树形导航,样式美观,使用方便 提供源代码及使用范例
  • Qt自定义标题

    千次阅读 2018-11-22 16:31:24
    这里只讲标题的创建方法,透明效果与样式我会在下一次介绍。为了让大家能够看清楚效果,上图是我以桌面作为背景。 相信大家可能已经查了很多资料,或者说刚看到我的这篇博客,不过都没关系,因为,看完我这篇,...
  • 一、Qt自定义标题简介 QWidget及其子类窗体组件的标题受操作系统的控制,即标题的界面风格与操作系统的主题风格相同,工程实践中需要开发者自行定义,达到美化应用程序界面的目的。 二、Qt自定义标题实现 ...
  • Qt自定义标题并实现拖拽

    千次阅读 2017-09-25 22:54:54
    Qt自定义标题并实现拖拽  很多时候,Qt自带的窗体边框不能满足我们的需求,或者我们觉得由于系统的主题影响导致界面太丑了,我们需要自行定义一个好看并和普通标题功能相同的控件去替代,以达到美化我们的程序...
  • Qt实现菜单栏,工具栏,状态栏

    万次阅读 2016-03-30 14:29:35
    1.菜单栏1.设计模式点击 在这里输入 输入完毕后直接回车即可 同样子菜单也是同样操作。 如果我们想给菜单设置ICON,可以如下操作: 在File下新建一个Open子菜单,现在想给Open子菜单添加Icon图标。选中子菜单...
  • 基于QT的多种自定义美化的界面控件,包括圆角按钮、进度条、单选、表格等多种自定义漂亮的控件
  • Qt实现自定义标题

    千次阅读 2019-10-10 12:11:53
    Qt实现自定义标题方案思路 方案思路 1.去除自动生成的标题 2.添加顶部工具 3.在工具上面添加放大、缩小、关闭按钮 4.添加槽函数指定其动作,重写鼠标双击、拖动事件 实现效果 第一步 this->...
  • Qt5.9自定义标题用法

    千次阅读 2018-07-19 18:39:58
    本博客主要总结创建Qt工程时,不用系统自带的标题,而是用自定义的标题。其中,自定义标题主要原理是,屏蔽原来的标题,然后用QVBoxLayout垂直布局管理器,加载一个标题QWidget。其中,这个标题QWidget...
  • 没有显示效果 显示效果 原因 将类中的Q_OBJECT这个宏给注释掉。
  • 设置自定义的标题需要修改鼠标移动事件,这样窗口才能移动。哪个窗口不能移动,就再这个窗口的类中添加下列代码。 有一点点的bug,窗口会突然移动,后续修改。 代码 .h文件 void mousePressEvent(QMouseEvent *...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,307
精华内容 1,722
关键字:

qt自定义菜单栏