Qt 油漆工。划线
我在试图划清界限Qt 油漆工。划线,qt,qpainter,Qt,Qpainter,我在试图划清界限 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); QPainter painter(&w); painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap)); painter.drawLine(0, 0, 200, 200);
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
QPainter painter(&w);
painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));
painter.drawLine(0, 0, 200, 200);
return a.exec();
}
但是窗户上没有画。怎么了?小部件只能在各自的绘制事件中绘制。您可以在任何函数中绘制pixmap,但需要在小部件绘制事件中显示结果 从文档: 警告:当paintdevice是小部件时,只能使用QPainter 在paintEvent()函数内部或在由调用的函数中 paintEvent();除非Qt::WA_PaintOutsidePaintEvent小部件 属性已设置
您不能在
paintEvent()
函数之外进行绘制,至少在Windows和Mac OS上是这样。但是,您可以重写main窗口
class'paintEvent()
函数,在那里画一条线。例如:
class Widget : public QWidget
{
protected:
void paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));
painter.drawLine(0, 0, 200, 200);
}
};
以及用法:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Widget w;
w.show();
[..]
不能在绘制事件之外的小部件上绘制。但您可以随时在非小部件上绘制,例如在
QImage
、QPixmap
或QPicture
上:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPicture pi;
QPainter p(&pi);
p.setRenderHint(QPainter::Antialiasing);
p.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));
p.drawLine(0, 0, 200, 200);
p.end(); // Don't forget this line!
QLabel l;
l.setPicture(pi);
l.show();
return a.exec();
}
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
qpicturepi;
QPainter p&pi;
p、 SetRenderInt(QPaint::抗锯齿);
p、 setPen(QPen(Qt::black,12,Qt::DashDotLine,Qt::RoundCap));
p、 抽绳(0,0,200,200);
p、 end();//别忘了这一行!
QLabel;
l、 设置图片(pi);
l、 show();
返回a.exec();
}