我想在一个Widget中的tabwidget中画图,该怎么办
QPainter painter(this);这里面的this应该怎么改?
又或者如果不能在控件上画的话,怎样使画出来的图形处于其他控件的上层而不至于被覆盖掉
------解决方案--------------------
前两个问题:先把图绘在一个Widget里,然后把它加在tabWidget里就行。
后一个问题我也坐等答案。
参考代码(WIN7、VS2008运行通过):
#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QTabWidget>
class paint : public QWidget
{
public:
paint(QColor c);
protected:
void paintEvent(QPaintEvent *event);
private:
QColor color;
};
paint::paint(QColor c)
{
color = c;
}
void paint::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));
painter.setBrush(QBrush(color, Qt::SolidPattern));
painter.drawEllipse(50, 40, 400, 300);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTabWidget *tabWidget = new QTabWidget;
tabWidget->addTab(new paint(Qt::green), "TabGreen");
tabWidget->addTab(new paint(Qt::red), "TabRed");
tabWidget->addTab(new paint(Qt::blue), "TabBlue");
tabWidget->resize(500, 400);
tabWidget->show();
return a.exec();
}
------解决方案--------------------
我的资源里有个例子,不用继承QTabWidget就能画图。