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_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic: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>查找(&F)</string></property></action></widget><resources/><connections/>
</ui>