当我在 Ubuntu14.04 中使用 Qt4.8.6 编译 QtCreator3.3.2 中的示例代码时,发生以下错误:
videowidget.cpp:19: error: no match for call to '(QPalette) ()'
palette = palette();
^
在此代码段中:
VideoWidget::VideoWidget(QWidget *parent) : QWidget(parent),surface(0)
{
setAutoFillBackground(false);
setAttribute(Qt::WA_NoSystemBackground,true);
setAttribute(Qt::WA_PaintOnScreen,true);
palette = this->palette();//here's the error
palette.setColor(QPalette::Background,Qt::black);
setPalette(palette);
setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding);
surface = new VideoWidgetSurface(this);
}
我在Qt智能助理和QPlalette
手册中查找QWidget
课程和QWidget
课程说:
访问功能:
const QPalette& palette()const
void setPalette(const QPalette&)
在我看来,QWidget
具有palette()
功能,因此VideoWidget
肯定会拥有它。但是出现了这样的错误。
提前谢谢。
答案 0 :(得分:2)
当您声明具有相同名称的变量时隐藏palette()
。使用其他名称,例如:
QPalette myPalette = palette();
在您的代码段中,您有另一个使用this
QPalette palette = this->palette();