想在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);
}
这几天确实不是头一次回答这个问题了。