qt有两个lineedit,如何获取光标所在

qt有两个lineedit,如何获取光标所在,第1张

两个lineEdit,判断焦点,按键无焦点,在设置linEdit有焦点setFocus才能有效;

参考实例如下:

#include "widget.h"#include "ui_widget.h"

#include <QButtonGroup>

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this)

QButtonGroup *m_buGroup = new QButtonGroup(this)//按钮

ui->pushButton0->setFocusPolicy(Qt::NoFocus)//设置按钮无焦点

ui->pushButton0->setIconSize(QSize(55, 50))

m_buGroup->addButton(ui->pushButton0,1)//添加按钮到QButtonGroup

ui->lineEdit->setFocus()//设置焦点

QObject::connect(m_buGroup, SIGNAL(buttonClicked(int)),this, SLOT(buttonNumslot(int)))

}

void Widget::buttonNumslot(int bn)

{

if(ui->lineEdit->hasFocus())//输入框1焦点

{

ui->lineEdit->insert(QString::number(bn))

}

else if(ui->lineEdit_2->hasFocus())//输入框2焦点

{

ui->lineEdit_2->insert(QString::number(bn))

}

设置按钮无焦点,lineEdit才可以判断焦点。

信号槽机制是这样的:connect(XXX,SIGNAL(...),this,SLOT(YYY))

帮你实现了你要的功能:(直接划到最底下有完整代码)

1,写在.h的内容,有三句话,注意位置

在piblic:添加声明  !!!

QString str  //声明str,用于接收输入的字符串

在三个权限关键字最后另起一行写 !!!

public slots://这里要回车,字体变黄色

void on_clicked()//函数名随意,括号不能少,有必要时括号里要写参数   

2,在.cpp中调用。

在.h把鼠标放在on_clicked()右击,在cpp添加定义(列表第七项下面第二项),系统会自己帮定义,在定义里写需要绑定的事件,比如你这里要将lineEdit中的字符串在TextBrowser中显示。

void MainWindow::on_clicked(){

str = ui->lineEdit->text()//这句获取输入的信息,一定要写在按钮槽函数里,因为按钮按下之前str存的值为空。这是按钮触发了才把值存到str中,没按之前我们就写了东西,所以按下了str读到的是自己写的内容。写在外面错误的方式就算自己写了内容运行的时候仍然是空,因为这里不是动态获取,自己消化一下

//   ui->textBrowser->clear()//如果希望每一次按确定后只显示一行就用这条语句,先把原来浏览器的内容清空,再把结果显示出来。

ui->textBrowser->append(str+"\n")//这里写的功能是把str追加到textBrowser中;我这里用换行是把第二次的输入也显示到浏览器中

//     ui->textBrowser->setText(str)//这里也可以用setText方法,效果一样

}

3,在主函数写完整信号槽。

connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_clicked())) //连接信号槽事件

//格式:connect(发送信号控件,SIGNAL(控件里的一个信号),接收的界面或控件(在同一页面一般是this),SLOT(刚定义的槽函数(函数写实现的功能))

运行效果图:

运行的整体效果

输入第一句话,显示的内容

第二句,回车格式在代码加的

一样的,可以输入任何字符,数字,中文

sentence4

窗口可以拉伸调整的

鼠标放在窗口边沿,窗口可以放大缩小,任意拉伸。qt application默认的。

头文件代码截图

源文件代码截图

ui界面和对象名称

//头文件:太啰嗦了,你自己把啰嗦的删掉吧,我只是怕初学者会理解不到位,故意啰嗦的

class MainWindow : public QMainWindow{

    Q_OBJECT

public:

    explicit MainWindow(QWidget *parent = 0)

    ~MainWindow()

    QString str   //声明str,用于接收输入的字符串

private:

    Ui::MainWindow *ui

public slots:    //这里要回车,字体变黄色

    void on_clicked()  //函数名随意,括号不能少,有必要时括号里要写参数

} //源文件:

MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this)

    ui->lineEdit->setPlaceholderText(QStringLiteral("Please input..."))

    

///*以下两条语句写的位置不对,可能会得不到期望效果(不信你就解除屏蔽看看效果)*///

//    QString str   //创建字符串,错误,最好在头文件声明

//    str = ui->lineEdit->text()//获取lineEdit的文本内容(最初文本内容为空,程序一运行就把lineEdit的空白存到str了,所有点击按钮发现上面是没有内容的)

    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_clicked()))  //连接信号槽事件

///格式:connect(发送信号控件,SIGNAL(控件里的一个信号),接收的界面或控件(在同一页面一般是this),SLOT(刚定义的槽函数(函数写实现的功能))

}

void MainWindow::on_clicked()

{

     str = ui->lineEdit->text() //这句获取输入的信息,一定要写在按钮槽函数里,因为按钮按下之前str存的值为空或者未知。

//     ui->textBrowser->clear()  //如果希望每一次按确定后只显示一行就用这条语句,先把原来浏览器的内容清空,再把结果显示出来。

     ui->textBrowser->append(str+"\n")//这里写的功能是把str追加到textBrowser中;我这里用换行是把第二次的输入也显示到浏览器中

//     ui->textBrowser->setText(str) //这里也可以用setText方法,效果一样

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11389444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存