在Qt编程在lineEdit中输入完内容后点击pushbutton并在TextBrowser显示lineEdit中的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Qt编程在lineEdit中输入完内容后点击pushbutton并在TextBrowser显示lineEdit中的内容相关的知识,希望对你有一定的参考价值。

请问,在Qt编程中,如何在lineEdit中输入完内容中,然后点击pushbutton确定,lineEdit中的字符就传递给str,并在TextBrowser中显示str也就是lineEdit中的内容。
下面代码有何错误,望高手指教:
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow)

ui->setupUi(this);
QString str;
connect(pushButton,SIGNAL(clicked()),this,SLOT(str=lineEdit->text()));
connect(lineEdit,SIGNAL(textChanged(constQString&)),this,SLOT(on_lineEdit_textChanged()));
ui->graphicsView->setText(str);

voidMainWindow::on_lineEdit_textChanged()

pushButton->setEnabled(lineEdit->hasAcceptableInput());

无法定义函数啊。
如能提供完整程序源码者,再追加5分。望高手帮助啊,小弟第一次学Qt。

信号槽机制是这样的: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方法,效果一样

参考技术A SLOT(str=lineEdit->text()),这里面要添槽函数,而不是这样弄,设计就有问题。
connect(pushButton,SIGNAL(clicked()),this,SLOT(OnBtnClicked()));

void MainWindow::OnBtnClicked()

QString str=ui->lineEidt->text();
ui->textBrowser->setText(str)

追问

不行啊!
编译显示
错误:no 'void MainWindow::OnBtnClicked()' member function declared in class 'MainWindow'

追答

这个,你这个函数是需要自己定义的槽函数,也许你应该先去学一下信号槽,Qt的基础知识,别急着写东西

追问

定义了。可是点击按钮无反应
把connect(pushButton,SIGNAL(clicked()),this,SLOT(OnBtnClicked()));
改为connect(pushButton,SIGNAL(clicked()),this,SLOT(quit()));
点击不关闭窗口
也就是说点击无效

追答

quit 属于QApplication的槽,你用到this窗口上怎么会quit,你仔细看一下程序输出信息,应该提示没有这个槽,你换为pushButton,SIGNAL(clicked()),qApp,SLOT(quit()));

本回答被提问者和网友采纳
参考技术B 第一个SLOT中不应该这么写吧,slot中应该是函数名吧,你把那条语句copy出来放在一个函数中看可以吗?

Qt中lineedit输入的内容以QString存放,有办法将Qsring内容一个一个取出吗?

QString buf = lineedit->text();

for(int i = 0; i < buf.length; i++)
qDebug() << buf.at(i);



裸打,没测试,意思就是这样
参考技术A QString buf = lineedit->text();

以上是关于在Qt编程在lineEdit中输入完内容后点击pushbutton并在TextBrowser显示lineEdit中的内容的主要内容,如果未能解决你的问题,请参考以下文章

Qt中lineedit输入的内容以QString存放,有办法将Qsring内容一个一个取出吗?

qt 输入框lineEdit把字符给一个数组

QT lineEdit 怎么自由的输入内容 我输入的时候只能输入汉字 无法输入字母和数字

QT textEdit里面有一段文本文字,在lineEdit输入一串字符串,点击一下pushbutton,在一个groupBox显示数量

qt中lineEdit输入的字符串另存在数组中怎么搞

pyqt 中怎么限定lineedit的数据类型