qt重写了QFrame的paintEvent,怎么才能显示出来

zxt5105515 2012-02-23 01:10:17
想在qrame中画图,就从QFrame继承得到了一个新类myframe,重写了paintEvent
然后在mainwindow定义中添加了一行 myframe *frame;
,现在的问题是怎么让frame在主窗口上显示
如下

//mainwindow.cpp
MainWindow::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();
}


...全文
960 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxt5105515 2012-02-23
  • 打赏
  • 举报
回复
很囧啊,其实frame已经显示了,但因为mywidget 默认大小是100*50,绘图绘到外面就看不到了
用setCentralWidget(frame)或是setGeometry(QRect&)都能解决

jdwx 2012-02-23
  • 打赏
  • 举报
回复
要用到这个函数: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);
}
这几天确实不是头一次回答这个问题了。
xiachm 2012-02-23
  • 打赏
  • 举报
回复
呵呵,兄弟真逗。你第二种写法其实Frame已经显示出来了,但Frame没有外框而且背景和窗口是一样的,所以你看不出来。

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

这是我最近几天碰到的第二个相同的问题了:)
bestman 2012-02-23
  • 打赏
  • 举报
回复
你做个层,然后把frame添加到主窗口的层里,那个show()函数在main函数中显示就行了

21,503

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧