最近项目上需要实现一个功能,选中文本框内容,点击列表中的一些运算函数,则将选中内容添加进运算函数中显示在文本框中,下边写了个demo简单测试了下。
知识点:
1.用到了QLineEdit的一个信号:cursorPositionChanged(int int) 作用是光标位置改变时触发
2.QLineEdit->selectedText() 作用获取选中内容
下图为介绍功能:
点击按钮后
time.....
代码附上:
头文件
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include#include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; QString localText; //选中的文本 private slots: void indexChanged(int oldIndex, int newIndex); void on_pushButton_clicked(); //按钮点击事件 }; #endif // MAINWINDOW_H
cpp文件
#include "mainwindow.h" #include "ui_mainwindow.h" #include "qdebug.h" #includeMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //给文本框初始化添内容 ui->lineEdit->setText("123456"); //取消按钮焦点 ui->pushButton->setFocusPolicy(Qt::NoFocus); //信号槽连接 cursorPositionChanged是lineEdit的一个信号,作用是监听光标在文本框中的位置变化,光标移动就触发 connect(ui->lineEdit,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(indexChanged(int,int))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::indexChanged(int oldIndex, int newIndex) { //获取选中内容赋给定义的全局变量 QString selectedText = ui->lineEdit->selectedText(); localText = selectedText; } void MainWindow::on_pushButton_clicked() { //打印选中文本 qDebug() << "选中的文本:" << localText; //将选中文本替换成空串(也就是删除掉) ui->lineEdit->text().replace(localText,""); //重新拼接插入值 ui->lineEdit->insert("sin("+localText+")"); }



