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
    评论
### 回答1: currenttextchanged是一个Qt框架中的信号,用于在文本框中当前文本发生更改时发出。当用户在文本框中输入或删除字符时,该信号将被触发。开发人员可以使用该信号来实现实时文本输入检查或在文本框中显示自动完成建议。 ### 回答2: currenttextchanged是一个事件,用于在文本发生变化时触发。这个事件通常与文本框或输入框相关联,当用户在文本框中输入或删除文本时,currenttextchanged事件就会被触发。 这个事件可以用于实时监测用户在文本框中输入的内容,并根据内容的变化做出相应的处理。我们可以通过订阅currenttextchanged事件来实现这一功能。 例如,当用户在搜索框中输入关键词时,我们可以通过currenttextchanged事件来实时获取用户输入的内容,并根据输入的关键词实时展示相关的搜索结果。这样用户就可以在输入关键词的同时浏览相关搜索结果,提高搜索的效率。 另外,我们还可以利用currenttextchanged事件实现实时校验输入的内容是否符合要求。比如,在用户填写表单时,我们可以通过订阅currenttextchanged事件来实时检查用户输入的邮箱地址格式是否正确,如果不正确,则可以即时提示用户进行修正,提高用户体验。 总之,currenttextchanged事件是一个很有用的事件,可以用于实时监测和处理文本的变化。它在各种需要实时响应用户输入的场景中都有广泛的应用。 ### 回答3: `currentTextChanged`是指在一个文本框(或文本输入框)中,当文本内容发生变化时触发的事件。 它可以用于监视用户在输入框中输入或删除文本时的操作。当用户输入或删除一个字符时,`currentTextChanged`事件会被触发,然后我们可以编写对应的处理逻辑。这个事件通常用于实时显示输入内容的变化,或进行实时的输入验证。 例如,在一个搜索框中,用户输入关键词时,我们可以利用`currentTextChanged`事件实时显示匹配的搜索结果。又或者在一个注册页面中,使用`currentTextChanged`事件进行实时的表单验证,检查用户输入是否满足要求。 `currentTextChanged`事件的参数是一个包含当前文本框中最新文本内容的字符串。我们可以通过获取这个参数来获取最新的文本,并进行相应的处理。 总之,`currentTextChanged`是一个在文本框内容发生改变时触发的事件,我们可以利用它实现一些实时显示或实时验证的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值