首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

qt重写了QFrame的paintEvent,如何才能显示出来

2012-10-17 
qt重写了QFrame的paintEvent,怎么才能显示出来想在qrame中画图,就从QFrame继承得到了一个新类myframe,重写

qt重写了QFrame的paintEvent,怎么才能显示出来
想在qrame中画图,就从QFrame继承得到了一个新类myframe,重写了paintEvent
然后在mainwindow定义中添加了一行 myframe *frame;
,现在的问题是怎么让frame在主窗口上显示
如下

C/C++ code
//mainwindow.cppMainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    frame= new MyFrame();//这样写就新弹出一个新窗口 ,显示正常,但不是在主窗口内   frame.show();}//第二种写法MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    frame= new MyFrame(this);//这样写就什么都不显示了   frame.show();}




[解决办法]
呵呵,兄弟真逗。你第二种写法其实Frame已经显示出来了,但Frame没有外框而且背景和窗口是一样的,所以你看不出来。

不信加一句frame->setStyleSheet("background-color: rgb(255, 0, 0);");

这是我最近几天碰到的第二个相同的问题了:)
[解决办法]
要用到这个函数:void QMainWindow::setCentralWidget ( QWidget * widget )
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{

ui->setupUi(this);
frame= new MyFrame(this);//这样写就什么都不显示了
//frame.show();
setCentralWidget(frame);
}
这几天确实不是头一次回答这个问题了。

热点排行