QPainter::drawLine和QPainter::drawText在Qt中存在不同颜色的问题
我面临使用QPainter绘制不同颜色的线条和文字的问题。我正在使用下面的代码来实现这一点,但它不起作用。线条和文字都是使用图形文字的颜色集绘制的QPainter::drawLine和QPainter::drawText在Qt中存在不同颜色的问题,qt,Qt,我面临使用QPainter绘制不同颜色的线条和文字的问题。我正在使用下面的代码来实现这一点,但它不起作用。线条和文字都是使用图形文字的颜色集绘制的 void MyWidget::drawHorLinesWithText(QPainter & painter, const QRect & rect) { for(int i=0; i < 5; i++) { QPen penHLines(QColor("#0e5a77"), 1, Qt::D
void MyWidget::drawHorLinesWithText(QPainter & painter, const QRect & rect)
{
for(int i=0; i < 5; i++)
{
QPen penHLines(QColor("#0e5a77"), 1, Qt::DotLine, Qt::FlatCap, Qt::RoundJoin);
painter.setPen(penHLines);
painter.drawLine(10, 50 - (5*(i+1)), 200, 50 - (5*(i+1)));
QString strNumber = QString::number((2)*(i+1));
painter.setFont(QFont("Arial", 8, QFont::Bold));
//QBrush brush(QColor("#00e0fc"));
//painter.setBrush(brush);
QPen penHText(QColor("#00e0fc"));//Here lines are also drawn using this color
painter.setPen(penHText);
painter.drawText(5, 50 - (5*(i+1)) - 10), 20, 30, Qt::AlignHCenter | Qt::AlignVCenter,
strNumber);
}
}
void MyWidget::drawHorLinesWithText(QPainter&painter,const QRect&rect)
{
对于(int i=0;i<5;i++)
{
QPen-penHLines(QColor(#0e5a77)),1,Qt::DotLine,Qt::FlatCap,Qt::RoundJoin;
画家:塞彭(彭林);
油漆工.拉丝(10,50-(5*(i+1)),200,50-(5*(i+1));
QString strNumber=QString::number((2)*(i+1));
setFont(QFont(“Arial”,8,QFont::Bold));
//QBrush刷(QColor(#00e0fc”);
//画家。挫折(画笔);
QPen penHText(QColor(#00e0fc”);//此处也使用此颜色绘制线条
画师:设置笔(penHText);
painter.drawText(5,50-(5*(i+1))-10,20,30,Qt::AlignHCenter | Qt::AlignVCenter,
标准编号);
}
}
我将如何为绘制线条和文本设置不同的颜色。任何建议。谢谢 QPaint使用QBrush而不是QPen绘制文本。文本使用字形笔划渲染,然后使用当前笔刷填充。当前笔仅控制线条和笔划。这适用于我使用Qt5.3的情况;也许这是你使用的版本中的一个bug
#include <QtWidgets>
class Widget : public QWidget
{
public:
Widget() {
resize(200, 200);
}
void paintEvent(QPaintEvent *) {
QPainter painter(this);
for(int i=0; i < 5; i++)
{
QPen penHLines(QColor("#0e5a77"), 10, Qt::DotLine, Qt::FlatCap, Qt::RoundJoin);
painter.setPen(penHLines);
painter.drawLine(10, 50 - (5*(i+1)), 200, 50 - (5*(i+1)));
QString strNumber = QString::number((2)*(i+1));
painter.setFont(QFont("Arial", 8, QFont::Bold));
QPen penHText(QColor("#00e0fc"));
painter.setPen(penHText);
painter.drawText(5, 50 - (5*(i+1)) - 10, 20, 30, Qt::AlignHCenter | Qt::AlignVCenter, strNumber);
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Widget w;
w.show();
return app.exec();
}
#包括
类Widget:publicqwidget
{
公众:
Widget(){
调整大小(200200);
}
无效paintEvent(QPaintEvent*){
油漆工(本);
对于(int i=0;i<5;i++)
{
QPen-penHLines(QColor(#0e5a77”)、10、Qt::DotLine、Qt::FlatCap、Qt::RoundJoin);
画家:塞彭(彭林);
油漆工.拉丝(10,50-(5*(i+1)),200,50-(5*(i+1));
QString strNumber=QString::number((2)*(i+1));
setFont(QFont(“Arial”,8,QFont::Bold));
QPen penHText(QColor(#00e0fc));
画师:设置笔(penHText);
painter.drawText(5,50-(5*(i+1))-10,20,30,Qt::AlignHCenter | Qt::AlignVCenter,strNumber);
}
}
};
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
小部件w;
w、 show();
返回app.exec();
}
我将线宽增加到10以查看发生了什么:
我已经用QBrush试过了。但同样的结果。请检查我的密码。我注释掉了QBrush,因为它在我的案例中不起作用。根据文档:“钢笔定义了如何绘制线条和轮廓,它还定义了文本颜色。”正如我在代码中提到的,我尝试使用QBrush和QPen,但结果是一样的。我遗漏了什么吗?如果我做错了什么,请指导我。在您第一次调用setPen()时,您没有使用上面创建的笔。这是您复制/粘贴到此处时添加的打字错误吗?在您上次的drawText()中还有一个额外的括号为什么每次迭代都要重新创建
QPen
s?嗨,三氯生,我想分别为绘制线条和绘制文本设置不同的颜色。我对这个问题投了否决票,因为您没有努力确保它能够真正编译,这实际上影响了我们能帮助你的程度,而且通常会浪费每个人的时间。