【发布时间】:2012-12-31 11:58:14
【问题描述】:
我将如何绘制一个矩形?
我尝试了两种不同的方法;
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(Qt::black);
QRect rect = QRect(290, 20, 70, 40);
painter.drawText(rect, Qt::AlignCenter,
"Data");
painter.drawRect(rect);
}
这很好用(即使参数没有命名也没有使用),但我不想使用 QPaintEvent * 我没有用它。
所以我尝试重命名我的函数;
void MyWidget::draw()
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(Qt::black);
QRect rect = QRect(290, 20, 70, 40);
painter.drawText(rect, Qt::AlignCenter,
"Data");
painter.drawRect(rect);
}
这不显示任何内容(但没有错误)。
如果我不使用 QPaintEvent * 为什么它不起作用??
【问题讨论】:
-
你为什么期望一个随机命名的函数被调用来做任何事情?你的第一种方法很好。不命名(还)不需要的参数是合法且惯用的 C++。
-
好的,如果我没有参数,是否有可能让第一个方法工作,但保持其他参数不变?
-
不,不管你是否使用它,这个参数都是必需的。我不明白您为什么要删除它 - 忽略它不会花费您任何费用。
-
它稍后会在我的代码中给我带来问题,我传递了其他参数,即 const QString &data。有没有另一种方法来绘制一个矩形,而不是使用事件参数?感谢您的回复。
-
事件函数的签名是固定的,您根本无法更改它们(除了可能添加具有默认值的参数,但即使它有效,我也不会这样做)。您需要在问题中更详细地描述您的问题,看起来您正在尝试以“错误的方式”做某事。