• 初识Qt窗口界面


    1、新建一个新的Qt Gui应用,项目名称随意,例如MyMainWindow,基类选择QMainWindow,类名为MainWindow。

    2、项目建立后,双击mainwindow.ui文件,在界面的“在这里输入”的地方进行双击,改写为“文件(&F)”,并按下回车键。此时,界面左上角显示“文件(F)”,并将其快捷键设置为Alt+F。

    3、同理,在文件的下拉菜单中添加“新建”选项。此时,在Action编辑器中可以看到刚添加的新建菜单,如下图第一行所示。

    4、双击action_N,可以打开"新建"选项的动作编辑属性对话框,如下图所示。并设置其快捷键为Ctrl+N。注意图标后面的黑色下拉箭头可以用于选择添加资源还是添加文件。通过该箭头选择添加资源,可以实现对新建选项对应图标的添加。此处,我们需要事先在项目中添加图标文件,才能在该下拉箭头添加资源时找到对应的图标,做法见下步。

    5、在工程项目单击右键选择添加新文件,同时选择Qt下的Qt资源文件,并设置名称为myResources,此时,工程中多了后缀为qrc的资源文件,并自动切换到该文件所在的界面。通过点击界面左下角的添加按钮进行图标资源的添加。此时需要先添加前缀,再添加文件。前缀默认为/new/prefix1,此时可以根据添加对象的名称随便修改,但不要用中文,完成之后注意保存文件。添加完成如下图所示。

    6、此时,重新回到新建动作属性对话框,单击图标选项末端的黑色下拉箭头,选择添加资源,选择对应的图标。完成之后,在相应的ui文件中显示新建选项前出现对应图标,同时运行后,显示相应的效果。

    7、前面演示了通过ui文件来进行菜单栏选项的添加,下面通过程序来实现菜单栏及其下拉菜单各个选项、工具栏、状态栏以及添加悬浮工具窗和建立文本窗编辑器的方法。

     1 #include "mainwindow.h"
     2 #include "ui_mainwindow.h"
     3 #include "qtextcodec.h"
     4 #include <QToolButton>
     5 #include <QSpinBox>
     6 #include <QTextEdit>
     7 #include<QMdiSubWindow>
     8 #include<QLabel>
     9 
    10 MainWindow::MainWindow(QWidget *parent) :
    11     QMainWindow(parent),
    12     ui(new Ui::MainWindow)
    13 {
    14     ui->setupUi(this);
    15     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//解决中文字符乱码问题
    16 
    17     QAction *openAction = new QAction(tr("&打开"), this); // 创建新的动作
    18     QIcon icono(":/myImages/fileopen.png");// 添加图标
    19     openAction->setIcon(icono);
    20     openAction->setShortcut(QKeySequence(tr("Ctrl+O"))); // 设置快捷键
    21     ui->menu->addAction(openAction);  // 在文件菜单中设置新的打开动作
    22 
    23     QAction *saveAction = new QAction(tr("&保存"), this);
    24     QIcon icons(":/myImages/filesave.png");
    25     saveAction->setIcon(icons);
    26     saveAction->setShortcut(QKeySequence(tr("Ctrl+S")));
    27     ui->menu->addAction(saveAction);
    28 
    29     QAction *saveasAction = new QAction(tr("&另保存"), this);
    30     QIcon icona(":/myImages/filesaveas.png");
    31     saveasAction->setIcon(icona);
    32     saveasAction->setShortcut(QKeySequence(tr("Ctrl+A")));
    33     ui->menu->addAction(saveasAction);
    34 
    35      QMenu *editMenu = ui->menuBar->addMenu(tr("编辑(&E)"));//使用ui->menuBar来获取QMainWindow的菜单栏
    36      QAction *findAction = editMenu->addAction(tr("&查找"));
    37      QIcon iconf(":/myImages/filefind.png");
    38      findAction->setIcon(iconf);
    39      findAction->setShortcut(QKeySequence(tr("Ctrl+F")));
    40 
    41      QMenu *helpMenu = ui->menuBar->addMenu(tr("帮助(&P)"));
    42 
    43 
    44      QActionGroup *group = new QActionGroup(this);//建立动作组
    45      QAction *action_L = group->addAction(tr("左对齐(&L)"));
    46      action_L->setCheckable(true);//状态可选中
    47      QAction *action_R = group->addAction(tr("右对齐(&R)"));
    48      action_R->setCheckable(true);
    49      QAction *action_C = group->addAction(tr("居中(&C)"));
    50      action_C->setCheckable(true);
    51      action_L->setChecked(true);//指定action_L为选中状态
    52      editMenu->addSeparator();//向菜单栏中添加间隔器,编辑的下拉菜单最后选项下面添加一条水平分隔线
    53      editMenu->addAction(action_L);//向菜单中添加动作
    54      editMenu->addAction(action_R);
    55      editMenu->addAction(action_C);
    56 
    57 
    58      QToolButton *toolBtn = new QToolButton(this);
    59      toolBtn->setText(tr("颜色"));
    60      QMenu *colorMenu = new QMenu(this);
    61      colorMenu->addAction(tr("红色"));
    62      colorMenu->addAction(tr(" 绿色"));
    63      toolBtn->setMenu(colorMenu);
    64      //设置弹出模式,右侧有小箭头用于下拉菜单选择。去掉该句,需要长按tooBtn才能弹出下拉菜单
    65      toolBtn->setPopupMode(QToolButton::MenuButtonPopup);
    66      ui->mainToolBar ->addWidget(toolBtn);//里哟个addWidget()函数向工具栏中添加部件
    67      QSpinBox *spinBox = new QSpinBox(this);
    68      ui->mainToolBar->addWidget(spinBox);
    69 
    70     //显示临时消息,显示2000毫秒即2秒钟
    71      ui->statusBar->showMessage(tr("欢迎使用Qt"), 2000);
    72      //创建标签,设置标签样式并显示消息,然后将其以永久部件的形式添加到状态栏
    73      QLabel *permanent = new QLabel(this);
    74      permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);
    75      permanent->setText(tr("Qt窗口设计"));
    76      ui->statusBar->addPermanentWidget(permanent); //添加永久性信息
    77 
    78 }
    79 
    80 MainWindow::~MainWindow()
    81 {
    82     delete ui;
    83 }
    84 
    85 void MainWindow::on_action_N_triggered()
    86 {
    87     QTextEdit *edit = new QTextEdit(this);//新建文本编辑器部件
    88     //使用QWdiArea类的addSunWindow()函数创建子窗口,以文本编辑器为中心部件
    89     QMdiSubWindow *child = ui->mdiArea->addSubWindow(edit);
    90     child->setWindowTitle(tr("多文档编辑器子窗口"));
    91     child->show();
    92 }
    93 
    94 void MainWindow::on_action_Dock_triggered()
    95 {
    96     ui->dockWidget->show();
    97 }

     8、在界面中添加中心部件(如多文档编辑器)或者Dock部件(如工具箱),需要在ui界面文件中拖入一个MidArea部件或者一个Dock部件,并在Action编辑器中找到对应的部件,单击右键选择“转到槽”,为其添加一个triggered()函数,编写其相应的功能。同时还可以在右侧对这些部件进行属性设置。

    9、设置完毕后,运行效果如下面的截图所示。

  • 相关阅读:
    echarts设置y轴线的样式
    echarts基础配置信息?
    提高网站用户体验使网站更好发展的五大要点
    没有或很少有出站链接的网站存在致命的缺陷
    网络推广之百度知道推广技巧
    如何让百度3分钟内收录你的文章
    CSS强制换行
    如何提高网站在搜索引擎中的权重
    js闭包深入详解
    深入浅出之正则表达式
  • 原文地址:https://www.cnblogs.com/peter-czhang/p/3374278.html
Copyright © 2020-2023  润新知