Qt系列文章之(十二)其他几个常用控件

上一篇文章介绍了QPushbutton,本文再基于上一篇文章介绍另外几个常用控件。打开ui编辑器,可以在左边看到很多控件,使用拖拽即可拖入ui编辑框。
在这里插入图片描述

QLabel 和 QLineEdit

最常用的控件组合是QLabel和QLineEdit,用来提示内容和实现输入的操作。在上一文的ui文件中拖入一个QLabel 和一个QLineEdit控件,修改QLabel名称为“标签”,修改QLineEdit的对象名称为lineEdit_input。
在这里插入图片描述

同样的,按照上文的例子,希望建立一个信号和槽的关联关系,输入完字符串之后,将输入的字符串添加到文本中。首先建立一个槽函数,来处理输入信息:

public slots:
    void  btnClicked();  //控件点击槽函数
void  inputFinished(); //Line Eidt输入结束槽函数

再到cpp文件中对槽函数进行实现:

void mainWindow::inputFinished(){
    ui->plainTextEdit->appendPlainText(ui->lineEdit_input->text());
}

建立字符串信号和槽函数的之间的关联,此处需要使用的信号函数是
editingFinished:

connect(ui->lineEdit_input,&QLineEdit::editingFinished,this,&mainWindow::inputFinished); //建立信号和槽的联系

运行代码,在edit中输入一段字符,按键盘回车键表示输入结束,输入信息将会保存到文本框之中:
在这里插入图片描述

下拉框QComboBox

另外比较重要的控件就是下拉菜单,Qt实现下拉菜单的模块是QComboBox。同样的,在ui设计器中向界面添加一个下拉菜单控件,并将对象命名为downList。
在这里插入图片描述

QComboBox的接口函数比较多,可以去Qt帮助之中仔细阅读:
在这里插入图片描述

默认添加的下拉菜单没有选择内容,可以通过接口函数insertItem(int index, const QString &text, const QVariant &userData = QVariant())来添加下拉选项,也可以直接在ui设计界面进行编辑。双击ui中的下拉菜单,添加一些下拉选项:
在这里插入图片描述

同样的,来开发一些和下拉动作相关的槽函数,当下拉菜单变化后,将选中的内容写入文本框之中,槽函数chooseChanged():

public slots:
    void  btnClicked();  //控件点击槽函数
    void  inputFinished(); //Line Eidt输入结束槽函数
    void  chooseChanged(); //ComboBox槽函数

在CPP中进行实现:

void mainWindow::chooseChanged()
{
    ui->plainTextEdit->appendPlainText(ui->downList->currentText());
}

再将槽函数与下拉菜单的信号关联,此处使用的信号是currentTextChanged。

connect(ui->downList,&QComboBox::currentTextChanged,this,&mainWindow::chooseChanged); //建立信号和槽的联系 

运行代码,选择几个下拉菜单:
在这里插入图片描述

其他常用的控件还有很多,此文就不再一一介绍,请读者自己阅读Qt帮助和ui设计器。

本文使用的h文件代码:

#ifndef MAINWINDOW_H

#define MAINWINDOW_H
#include <QMainWindow>
#include <QtCore>
#include <QMenu>
#include <QMenuBar>
#include <QToolBar>
#include <QDockWidget>
#include <QPlainTextEdit>
#include <QAction>

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;
    QMenu *m_fileMenu;     //添加一些menu
    QToolBar *m_fileToolBar; //添加一些工具栏
    QDockWidget *m_dockWidget = nullptr;
public slots:
    void  btnClicked();  //控件点击槽函数
    void  inputFinished(); //Line Eidt输入结束槽函数
    void  chooseChanged(); //ComboBox槽函数
};
#endif // MAINWINDOW_H

本文使用的cpp文件代码:

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

mainWindow::mainWindow(QWidget *parent)
    : QMainWindow(parent)
      , ui(new Ui::mainWindow)
      ,m_dockWidget (new QDockWidget("Dock Widget", this))
{
    ui->setupUi(this);

    m_fileMenu = menuBar()->addMenu("&File");
    m_fileMenu->addAction("newAction");
    m_fileMenu->addAction("openAct");
    m_fileMenu->addAction("saveAct");

    m_fileToolBar = addToolBar("File");
    m_fileToolBar->addAction("newAction");
    m_fileToolBar->addAction("openAct");
    m_fileToolBar->addAction("saveAct");

    m_dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea |
                                    Qt::RightDockWidgetArea);
    addDockWidget(Qt::LeftDockWidgetArea, m_dockWidget);

    connect(ui->btu_click,&QPushButton::clicked,this,&mainWindow::btnClicked); //建立信号和槽的联系
    connect(ui->lineEdit_input,&QLineEdit::editingFinished,this,&mainWindow::inputFinished); //建立信号和槽的联系
    connect(ui->downList,&QComboBox::currentTextChanged,this,&mainWindow::chooseChanged); //建立信号和槽的联系
}

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

void mainWindow::btnClicked()
{
    ui->plainTextEdit->appendPlainText("You clicked the button!\n");
}

void mainWindow::inputFinished()
{
    ui->plainTextEdit->appendPlainText(ui->lineEdit_input->text());
}

void mainWindow::chooseChanged()
{
    ui->plainTextEdit->appendPlainText(ui->downList->currentText());
}

本文本使用的ui文件代码:

<?xmlversion="1.0"encoding="UTF-8"?>
<uiversion="4.0">
 <class>mainWindow</class>
 <widgetclass="QMainWindow"name="mainWindow">
  <propertyname="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>731</width>
    <height>456</height>
   </rect>
  </property>
  <propertyname="windowTitle">
   <string>mainWindow</string>
  </property>
  <widgetclass="QWidget"name="centralwidget">
   <layoutclass="QGridLayout"name="gridLayout_2">
    <itemrow="0"column="0">
     <widgetclass="QSplitter"name="splitter">
      <propertyname="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <widgetclass="QWidget"name="layoutWidget">
       <layoutclass="QVBoxLayout"name="verticalLayout">
        <item>
         <widgetclass="QPlainTextEdit"name="plainTextEdit">
          <propertyname="plainText">
           <string>WelcometoQtworld!</string>
          </property>
         </widget>
        </item>
        <item>
         <spacername="horizontalSpacer">
          <propertyname="orientation">
           <enum>Qt::Horizontal</enum>
          </property>
          <propertyname="sizeHint"stdset="0">
           <size>
            <width>498</width>
            <height>20</height>
           </size>
          </property>
         </spacer>
        </item>
       </layout>
      </widget>
      <widgetclass="QWidget"name="layoutWidget">
       <layoutclass="QGridLayout"name="gridLayout">
        <itemrow="0"column="0">
         <widgetclass="QPushButton"name="btu_click">
          <propertyname="text">
           <string>点击按钮</string>
          </property>
         </widget>
        </item>
        <itemrow="1"column="0">
         <widgetclass="QLabel"name="label">
          <propertyname="text">
           <string>标签</string>
          </property>
         </widget>
        </item>
        <itemrow="1"column="1">
         <widgetclass="QLineEdit"name="lineEdit_input"/>
        </item>
        <itemrow="2"column="1">
         <widgetclass="QComboBox"name="downList">
          <item>
           <propertyname="text">
            <string>Item1</string>
           </property>
          </item>
          <item>
           <propertyname="text">
            <string>Item2</string>
           </property>
          </item>
          <item>
           <propertyname="text">
            <string>Item3</string>
           </property>
          </item>
          <item>
           <propertyname="text">
            <string>Item4</string>
           </property>
          </item>
         </widget>
        </item>
        <itemrow="2"column="0">
         <widgetclass="QLabel"name="label_2">
          <propertyname="text">
           <string>选择信息</string>
          </property>
         </widget>
        </item>
       </layout>
      </widget>
     </widget>
    </item>
   </layout>
  </widget>
  <widgetclass="QMenuBar"name="menubar">
   <propertyname="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>731</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widgetclass="QStatusBar"name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>


欢迎同好沟通交流,批评指正,欢迎关注我的公号:不如起而行之

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值