Qt简单文本查找

Qt版本: Qt6

具体代码:

1. 头文件 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class QLineEdit;
class QDialog;
class QPushButton;
class QVBoxLayout;
class QTextEdit;

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;

private:
    QLineEdit *findLineEdit;
    QDialog *findDlg;
    QPushButton *findButon;
    QVBoxLayout *layout;
    QTextEdit *textEdit;

//槽函数
private slots:
    void showFindText();
private slots:
    void on_actionfind_triggered();
};
#endif // MAINWINDOW_H

2. 源文件 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QPushButton>
#include <QLineEdit>
#include <QVBoxLayout>
#include "QTextEdit"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //主窗口文本输入框
    textEdit = new QTextEdit(this);
    textEdit->append("Apple");
    textEdit->append("Banana");
    textEdit->append("Cherry");
    textEdit->append("Cherrys");
    textEdit->append("Cherryss");
    //布局
    QVBoxLayout *layouts = new QVBoxLayout(this);
    QWidget *centralWidget = new QWidget(this);
    layouts->addWidget(textEdit);
    centralWidget->setLayout(layouts);
    setCentralWidget(centralWidget);


    //对话框
    findDlg = new QDialog(this);
    findButon = new QPushButton(tr("查找下一个"),findDlg);
    findLineEdit = new QLineEdit(findDlg);
    layout = new QVBoxLayout(findDlg);

    findDlg->setWindowTitle(tr("查找"));

    layout->addWidget(findLineEdit);
    layout->addWidget(findButon);
    //信号与槽关联
    connect(findButon,&QPushButton::clicked,this,&MainWindow::showFindText);

}

MainWindow::~MainWindow()
{
    delete ui;
}
//对话框查找槽函数
void MainWindow::showFindText(){

    QString str =  findLineEdit->text();
    bool ret = textEdit->find(str, QTextDocument::FindBackward);
    if (!ret)
    {
        QMessageBox::warning(this, tr("查找"), tr("找不到%1").arg(str));
    }
}
//菜单槽函数
void MainWindow::on_actionfind_triggered()
{
    findDlg->show();
}

3. 源文件 main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

4. 界面文件 mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>992</width>
    <height>641</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget"/>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>992</width>
     <height>25</height>
    </rect>
   </property>
   <widget class="QMenu" name="menu_F">
    <property name="title">
     <string>菜单</string>
    </property>
    <addaction name="actionfind"/>
   </widget>
   <addaction name="menu_F"/>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
  <action name="actionfind">
   <property name="text">
    <string>查找(&amp;F)</string>
   </property>
  </action>
 </widget>
 <resources/>
 <connections/>
</ui>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Uranus^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值