首页| 论坛| 消息

标题:check_box toggled信号的槽函数中setChecked(false)程序崩溃
作者:gym216
日期:2020-07-01 08:39
内容:

我想在复选框被打勾选中时,判断条件,如果达不到就把选中状态取消。设置checkbox的toggled的槽函数如下:
void MainWindow::on_checkBox_5_toggled(bool checked)
{
bool result;
if(checked)
{
if(file_save==NULL) qDebug()text().isEmpty())
{
result=false;
}
else
{
result=true;
}
if(result==false)
{
qDebug()setChecked(false); //打开这一句就异常退出
}
}
else
{
qDebug()


#1 [clickto 07-01 09:24]
ui->checkBox_5->setChecked(false); 这句会导致再次进入函数自身on_checkBox_5_toggled(bool checked),形成一个没有退出条件的递归。
要达到你要的效果,可以试试别的信号组合,比如:
void MainWindow::on_checkBox_clicked()
{
if(ui->lineEdit->text().isEmpty())
{
ui->checkBox->setChecked(false);
}
}
#2 [gym216 07-01 09:56]
果然是这样。谢谢帮助!
void MainWindow::on_checkBox_5_clicked()
{
qDebug()checkState()==Qt::Checked)
{
if(ui->labelPath->text().isEmpty())
{
ui->checkBox_5->setChecked(false);
}
}
else
{
}
}
#3 回 clickto 的帖子 [gym216 07-01 10:02]
clickto:ui->checkBox_5->setChecked(false); 这句会导致再次进入函数自身on_checkBox_5_toggled(bool checked),形成一个没有退出条件的递归。
要达到你要的效果,可以试试别的信号组合,比如:
void MainWindow::on_checkBox_clicked()
{
.......(2020-07-01 09:24)
谢谢。还有个问题帮我看下吧:我在头文件定义个指针QFile *file_save; 在程序关闭前检测file_save是否有打开的文件并关闭。实际操作有问题
void MainWindow::closeEvent(QCloseEvent *event)
{
if(file_save !=NULL &&file_save->isOpen())
{
file_save->close();
}
}
实际程序并没有操作*file_save,但是file_save !=NULL &&file_save->isOpen() 这两个都是true
#4 [clickto 07-01 12:12]
因为没有具体代码,所以无法详细说。
但是有基本的方法的。
如果你能确定if后面的条件是true,但是file_save的close方法并没有执行,那么你可有看看是否closeEvent并没有被执行?或者执行了,只是你不知道?
打个断点,调试一下,或者直接qDebug一下,就都知道了。

回复 发表
主题 版块