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>查找(&F)</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>