呼叫'(QPalette)()' Qt4在Linux中

时间:2015-04-21 20:48:14

标签: linux qt

当我在 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肯定会拥有它。但是出现了这样的错误。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

当您声明具有相同名称的变量时隐藏palette()。使用其他名称,例如:

QPalette myPalette = palette();

在您的代码段中,您有另一个使用this

的工作解决方案
QPalette palette = this->palette();
相关问题