• 4248阅读
  • 2回复

[提问]关于设置好默认按钮,在QLineEdit中输入按下Enter无用的问题 [复制链接]

上一主题 下一主题
离线cywl
 

只看楼主 倒序阅读 楼主  发表于: 2016-05-12
我了想设计一个输入数据在乘以2输出显示的程序,向设置Enter键来直接引发计算,但是按下Enter键后没有任何反应,求大神帮助
下面是我写的代码
calculate.h
#ifndef CALCULATE_H
#define CALCULATE_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QString>
class Calculate : public QWidget
{    
Q_OBJECT
public:    
Calculate(QWidget * parent = 0);  
~Calculate();
private slots:    
void display();
private:    
QPushButton * submitButton;  
QLabel * infolabel;  
QLabel * displayLabel;  
QLineEdit * resultLineEdit;
};
#endif // CALCULATE_H




calculate.cpp
#include "calculate.h"
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QString>
Calculate::Calculate(QWidget * parent) : QWidget (parent)
{    
infolabel = new QLabel(tr("请输入半径:"));    
displayLabel = new QLabel;  
resultLineEdit = new QLineEdit;    
submitButton = new QPushButton;
    submitButton->setText(tr("确认"));    
submitButton->setFocus();    
submitButton->setDefault(true);
    
connect(submitButton,SIGNAL(clicked(bool)), this, SLOT(display()));
    QHBoxLayout * topLayout = new QHBoxLayout;    
topLayout -> addWidget(infolabel);    t
opLayout -> addWidget(resultLineEdit);
    QHBoxLayout * buttomLayout = new QHBoxLayout;  
buttomLayout -> addWidget(displayLabel);  
buttomLayout -> addWidget(submitButton);
    QVBoxLayout * mainLayout = new QVBoxLayout;    
mainLayout -> addLayout(topLayout);    
mainLayout -> addLayout(buttomLayout);


    setLayout(mainLayout);}
Calculate::~Calculate()
{
}
void Calculate::display()
{    
QString variantofresult;    
variantofresult = resultLineEdit -> text();    
double value = variantofresult.toDouble();
    value *= 2;
    variantofresult = variantofresult.setNum(value);  
displayLabel -> setText(variantofresult);
}
下面是运行结果




在QLineEdit中输入数据后按下Enter键没有作用
并不显示结果;
求大神指导指导
离线pengchengfan

只看该作者 1楼 发表于: 2017-05-16
因为你并没有绑定lineEdit的returnPress信号啊,你绑定的是按钮的click信号,而且你设置的默认的焦点是按钮,但是在你在lineedit中输入的是否,焦点已经在lineedit上面了,这个是否按回车,触发的当然是lineedit的returnpress信号了,,,对此,解决方法是connect lineedit的returnpressed()信号和你的display()槽函数
离线pengchengfan

只看该作者 2楼 发表于: 2017-05-16
额,回复完才发现这帖子都一年了,想必你现在肯定懂了,顺便说一句:结帖是个好习惯!
快速回复
限100 字节
 
上一个 下一个