关于lineEdit清除之前显示内容,不影响下一次显示的问题
新手提问,如何让lineEdit显示完一次指定的内容后,彻底清除,进行下一次显示?我使用了lineEdit->clear();,但是还是影响了下一次的正常显示,例如:要求判断一个式子是否成立,成立则Lineedit显示1,不成立显示0,第一次判断的结果是成立,显示了1,进行了clear清除,但是第二次判断,结果不成立,应该显示0,为什么还显示1呢?求解答,谢谢大家!
[解决办法]
if(true)
{
lineEdit->clear();
lineEdit->setText(QString::number(1));
}
else
{
lineEdit->clear();
lineEdit->setText(QString::number(0));
}
if(true)
{
lineEdit->clear();
lineEdit->setText(QString::number(1));
}
else
{
lineEdit->clear();
lineEdit->setText(QString::number(0));
}
上面写错了,应该用一个变量去判断。
还是不对啊,还是影响了第二次判断,问题是如果单独进行一个文件的判断,显示的是正确的,但是判断多个文件的就不行了,问题是出在哪里呢?谢谢您!
不如你把代码贴出来吧。
麻烦您帮我看一下7#的代码,运行完之后,确实Lineedit显示的不正确
QList<int>n_listY;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
for(int x=0;x<=8;x++)
ui->comboBox->addItem("00"+QString::number(x));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString date1=ui->comboBox->currentText();
QString path= QString("D:/%1.txt").arg(date1);
FILE *fp;
if( (fp = fopen( path.toUtf8(),"rb") ) == NULL)
{
QMessageBox::warning(this,"warning","open file to read failed!");
return;
}
int nyo=0;
int fy;
fy=0;
while( !feof( fp ) )
{
fread(&fy,sizeof(int),1,fp);
n_listY.append(fy);
}
for(int ny=0;ny<n_listY.size();ny++)
{
if(n_listY.at(ny)>1079140000)
{
nyo=1;
ui->lineEdit->clear();
ui->lineEdit->setText(QString::number(nyo));
break;
}
else //nyo = 0的时候没有给lineEdit赋值
{
nyo=0;
ui->lineEdit->clear();
ui->lineEdit->setText(QString::number(nyo));
}
}
fclose(fp);
}
程序的代码
QList<int>n_listY;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
for(int x=0;x<=8;x++)
ui->comboBox->addItem("00"+QString::number(x));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString date1=ui->comboBox->currentText();
QString path= QString("D:/%1.txt").arg(date1);
FILE *fp;
if( (fp = fopen( path.toUtf8(),"rb") ) == NULL)
{
QMessageBox::warning(this,"warning","open file to read failed!");
return;
}
int nyo=0;
int fy;
fy=0;
while( !feof( fp ) )
{
fread(&fy,sizeof(int),1,fp);
n_listY.append(fy);
}
for(int ny=0;ny<n_listY.size();ny++)
{
if(n_listY.at(ny)>1079140000)
{
nyo=1;
ui->lineEdit->clear();
ui->lineEdit->setText(QString::number(nyo));
break;
}
}
fclose(fp);
}
现在是这样的,如果判断出了,一个文件中有数据大于规定的这个数,那么Lineedit显示为1,就不继续判断,跳出此次判断,我用的break是否是对的呢?如果这个文件中,数据都没有大于规定的数,那么lineedit就等于0了,下一个文件也是这么判断,您看看问题出在哪里呢?
nyo=0;
ui->lineEdit->clear();
ui->lineEdit->setText(QString::number(nyo));
开始是没有设置,但是我按照9#说的,加了一个else用来显示0,但是还是不对,,当第一次lineedit显示0,第二次能正确显示1,这个可以,但是若lineedit先显示1,后面就不显示0了,还是保持1,不知道是什么原因了呢