zoukankan      html  css  js  c++  java
  • Qt 窗口的一些简单设置-标题、图标、最大化最小化按钮、任务栏图标

    零零碎碎看了很多Qt例子,有一些很零散的窗体控制方法,在这总结一些。

    1.更改窗体标题

    this->setWindowTitle("窗体标题");

    窗体标题”就是更改的窗体标题


    2.控制窗体大小

    1 this->setMaximumSize(300,300);  //窗体最大尺寸
    2 this->setMinimumSize(300,300);  //窗体最小尺寸
    3 this->setMinimumHeight(300);    //单独设置窗体高的最小值
    4 this->setMaximumWidth(300);     //单独设置窗体宽的最小值

    也可以通过窗体布局控制窗体大小

    1 QGridLayout *mainLayout = new QGridLayout;                  //窗体中控件为网格布局
    2 mainLayout->setSizeConstraint(QLayout::SetFixedSize);       //布局大小不变

    在构造函数中的这个函数强制设置窗体的布局为固定大小,用户不可自行调整对话框大小。布局管理器将会负责调整大小的任务,当一些子窗口期间显示或隐藏的时候自动的调整对话框的大小,以保证对话框总是以优化了的大小显示。

    在官方文档中setSizeConstraint给的解释为:sizeConstraint:SizeConstraint.  This property holds the resize mode of the layout.

    这个函数主要是通过布局管理器对布局大小进行限制,与上面介绍的窗体大小有所不同。

    函数SetFixedSize如下:

    void QWidget::setFixedSize(const QSize &s);

    设置控件的最大和最小尺寸为s,防止控件大小的变化。


    3.更改窗体图标

    首先在项目右键-->添加新文件,弹出如下对话框

    在左侧选中Qt,右侧选择Qt Resource File,然后Choose,页面如下:

    如果路径没错的话就自己命一个名字例如:icon,然后下一步,一路next知道完成。这时候在工程文件目录下多出一个后缀为.qrc的文件,打开,如下:

    然后在右侧点击添加->添加前缀,然后->添加文件,选择准备好的ICO图片,图片可以去矢量图库搜索下载,这里选用32*32的彩色图标,添加完图标后给图标起一个别名,容易被记忆的,写代码的时候可以直接用别名代替图片名称,如下:

    这时候窗体图标就已经准备好了,下面开始编写代码,在mainwindows.cpp文件中

    1 this->setWindowTitle("calculator");                     //设置窗体标题
    2 this->setMaximumSize(300,400);                          //窗体最大尺寸
    3 this->setMinimumSize(300,400);                          //窗体最小尺寸
    4 this->setWindowIcon(QIcon(":/new/prefix1/icon"));       //窗体图标

    运行看一下图标已经改了。


    4.去掉标题栏中最大化最小化按钮

    1 //关闭按钮失效
    2 this->setWindowFlags(Qt::WindowMinMaxButtonsHint);
    3 //去掉最大化最小化按钮,保留关闭按钮
    4 this->setWindowFlags(Qt::WindowCloseButtonHint);

    5.添加任务栏图标

    在MainWindow.h文件中添加如下代码

     1 #include <QSystemTrayIcon>    //任务栏类
     2 #include <QMenu>    //菜单类
     3  
     4 private:
     5  
     6     //窗口任务栏属性
     7     QSystemTrayIcon *trayIcon;
     8     QMenu *trayMenu;
     9     QAction *quitAction;    //退出程序
    10     QAction *restoreWinAction;  //恢复窗口
    11     void createMenu();
    1 private slots:
    2       void showNormal();

    在mainwindow.cpp中添加代码

     1     createMenu();
     2  
     3     //判断系统是否支持托盘图标显示
     4     if(!QSystemTrayIcon::isSystemTrayAvailable())
     5     {
     6         return;
     7     }
     8  
     9     //实例化托盘图标控件
    10     trayIcon = new QSystemTrayIcon(this);
    11     trayIcon->setIcon(QIcon(":/new/prefix1/icon"));     //设置托盘图标显示
    12     trayIcon->setToolTip("Calculator"); //显示提示信息
    13     trayIcon->showMessage("托盘","托盘管理",QSystemTrayIcon::Information,10000);
    14     trayIcon->setContextMenu(trayMenu); //绑定托盘菜单
    15     trayIcon->show();   //在任务栏显示图标
    16  
    17 //绘制任务栏菜单
    18 void MainWindow::createMenu()
    19 {
    20     restoreWinAction = new QAction("恢复(&R)",this);
    21     quitAction = new QAction("退出(&Q)",this);
    22  
    23     //恢复窗口
    24     connect(restoreWinAction,SIGNAL(triggered(bool)),this,SLOT(showNormal()));
    25  
    26     //退出程序
    27     connect(quitAction,SIGNAL(triggered(bool)),qApp,SLOT(quit()));
    28  
    29     //添加菜单
    30     trayMenu = new QMenu((QWidget*)QApplication::desktop());
    31     trayMenu->addAction(restoreWinAction);  //将控件绑定到菜单
    32  
    33     //添加分隔符
    34     trayMenu->addSeparator();
    35     trayMenu->addAction(quitAction);
    36 }
    37  
    38 //恢复程序窗口
    39 void MainWindow::showNormal()
    40 {
    41     this->show();
    42 }
    43  
    44 //最小化隐藏界面
    45 void QWidget::changeEvent(QEvent *e)
    46 {
    47     if((e->type()==QEvent::WindowStateChange)&&this->isMinimized())
    48     {
    49         this->hide();
    50     }
    51 }
  • 相关阅读:
    获取ios设备的当前IP地址
    swift 日期的基本操作
    iOS ChildViewController使用示例
    Swift 进制转换问题
    objc_msgSend iOS8 EXC_BAD_ACCESS
    objc非主流代码技巧
    黑魔法__attribute__((cleanup))
    判断一个对象是否实现了某方法,而非继承而来
    Controlling How NSThread and NSRunLoop Exit
    万年历-农历-节气
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13181549.html
Copyright © 2011-2022 走看看