【问题标题】:reference to type 'const QVariant' could not bind to an rvalue of type 'void'对“const QVariant”类型的引用无法绑定到“void”类型的右值
【发布时间】:2020-05-08 20:49:26
【问题描述】:

我正在尝试保存以下修改:启用 pushButton_4。

void Vessels::SaveSettings()
{
    QSettings setting("My_vessels","My_selected_vessels");
    setting.beginGroup("Vessels");
    setting.setValue("selected",ui->pushButton_4->setEnabled(false));
    setting.endGroup();
}

当我运行时,我收到此错误: 船只.cpp:838:33:错误:对“const QVariant”类型的引用无法绑定到“void”类型的右值 qsettings.h:167:55:注意:在此处将参数传递给参数“值”

我想知道的是如何在这个窗口中为一个对象设置值。我的意思是启用按钮只是一个例子。

【问题讨论】:

  • 这可能无关,但请注意("My_vessels","My_selected_vessels") 周围的额外括号。由于逗号运算符,此表达式将计算为简单的 "My_selected_vessels"
  • “我收到此错误:vessel.cpp:838:33”我可能是错的,但您显示的代码片段没有 838 行。我们是否应该使用心灵感应来猜测哪一行产生了错误?

标签: c++ qt c++11 qpushbutton qsettings


【解决方案1】:
setting.setValue("selected",ui->pushButton_4->setEnabled(false));

QWidget::setEnabled 返回 void,您无法在 QSettings::setValue 中将其转换为 QVariant。你是说ui->pushButton_4->isEnabled()吗?

【讨论】:

  • 我明白你的意思,但我想禁用 pushButton_4。如果我不能使用 setEnabled(false) 怎么办?
  • 你不能在一次调用中做到这一点:你首先必须禁用它,然后保存它被禁用。
  • ui->pushButton_4->setEnabled(true/false) 然后setting.setValue("selected", ui->pushButton_4->isEnabled())
  • 好的,谢谢,我做到了,它有效。关闭窗口并保存参数后,我想通过单击主窗口中的“打开”按钮重新打开此窗口,此按钮必须打开该窗口并加载保存的参数,请问我该怎么做?问题是保存修改的按钮和加载修改的按钮不在同一个窗口上。我需要你的帮助!
  • 如果您有其他问题,可以关闭此问题并打开一个新问题。
猜你喜欢
  • 2020-09-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多