• 10078阅读
  • 4回复

qt中如何画图,使用QPainter,提示QPainter is not active [复制链接]

上一主题 下一主题
离线nikshuang
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-08
如题,我只需要在窗体的一个指定区域内刷为黑色,我在程序中调用QPainter,提示QPainter is not active,难道QPainter只能在PaintEvent中才能调用吗。代码如下,请高手帮忙指点,我要的效果只是刷为黑色,用其他方法也行:
void MainWindow::initLogo()
{
    /* brush a black background */
    QPainter paint(this);
    paint.setPen(QPen(Qt::black));
    paint.setBrush(QBrush(Qt::black, Qt::SolidPattern));
    paint.drawRect(10, 20, this->width() - 20, this->height() - 30);

    .......
}
离线benbenmajia

只看该作者 1楼 发表于: 2009-12-08
在QT中,painter的试用必须在event时间中实现,如:
void sublabel::paintEvent(QPaintEvent *)
{
    QPainter *painter = new QPainter(this);
    painter->setPen(QPen(Qt::blue, 4, Qt::DashDotLine, Qt::RoundCap));
                    painter->drawEllipse(100,100,100,100);
}
、、、
、、、
、、类的其他实现
int main(XXX)
{
     XXXXX
xx

}
        
安然.....
离线nikshuang

只看该作者 2楼 发表于: 2009-12-10
必须是事件是吧,试试看别的事件能不能用qpainter,谢谢了
离线poston
只看该作者 3楼 发表于: 2011-04-02
The common use of QPainter is inside a widget's paint event: Construct and customize (e.g. set the pen or the brush) the painter. ...................Warning: When the paintdevice is a widget, QPainter can only be used inside a paintEvent() function or in a function called by paintEvent();  
Qt API中的解释:一般使用QPainter是放在Widget的绘画事件中的,自定义这个painter(例如:画笔,画刷).......................特别注意:当在widget中进行绘图时,QPainter必须使用在paintEvent()函数中,通过调用paintEvent()来进行绘画
离线xlttap

只看该作者 4楼 发表于: 2011-04-02
你要是想在别的地方画,你就要指定新的绘图设备,
如把QPainter paint(this)  改成QPainter paint(image)等,然后再在paintEvent中用
drawImage画出来,这也就是QT中的双缓冲机制。
我简单我快乐
快速回复
限100 字节
 
上一个 下一个