Qt中PaintWidget在MainWindow下不能绘制

main.cpp

 #include "mainwindow.h"
#include <QApplication>
#include "paintwidget.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
        w.showchild();
    return a.exec();
}

mainwindow.cpp

 #include "mainwindow.h"
#include "ui_mainwindow.h"
#include "paintwidget.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
resize(800,600);
}
void MainWindow::showchild(){
    PaintWidget widget(this);
    widget.show();
}
MainWindow::~MainWindow()
{
    delete ui;
}

paintwidget.cpp

 #include "paintwidget.h"
#include <Qpainter>
#include "qpainter.h"

PaintWidget::PaintWidget(QWidget *parent) : QWidget(parent)
{
 resize(800,600);
 setWindowTitle(tr("paint demo"));
}
void PaintWidget::paintEvent(QPaintEvent *){
    QPainter painter(this);
    painter.drawLine(80,100,650,500);
    painter.setPen(Qt::red);
    painter.drawRect(10,10,100,400);
    painter.setPen(QPen(Qt::green,5));
    painter.setBrush(Qt::blue);
    painter.drawEllipse(50,150,400,200);
}

没有报错,但是什么也没绘制出来。

3个回答

你的widget对象要动态分配出来才可以

还没来得及显示对象就析构了。。

出了作用于就被释放了,要么用指针,要么用作类的成员变量!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
qt mainwindow
qt mainwindow的一些操作
Qt MainWindow中创建菜单
新建项目得到的ui中: pMenuBar = ui-&amp;gt;menuBar; // 菜单栏 然后相应的创建菜单,在创建菜单项,代码如下: void MainWindow::createMenus() { //新建一个菜单A QMenu* pNewMenu = new QMenu(&quot;&amp;amp;File&quot;); // q则为Alt方式的快捷键 //新建一个...
Qt中MainWindow类实例
QMainWindow;
QT mainwindow 源文件
mainwindow界面 可继续添加按钮和下拉菜单 可运行
Qt 布局 mainwindow示例
Qt 布局 mainwindow示例
基于QT的MainWindow文本编辑器.
基于QT的MainWindow文本编辑器.linux环境,QT4平台,实现最简单的文本编辑器的设计。包括新建、保存、另存为、撤销、复制、黏贴、删除等操作。
Qt Mainwindow添加/删除标题栏
需求:添加/删除Qt Mainwindow的标题栏特殊点:不能在Mainwindow外部进行设置,须在Mainwindow内部设置(SLOT或其他内部函数中)传统方法:this-&amp;gt;setWindowFlags(Qt::FramelessWindowHint);                //取消标题栏this-&amp;gt;setWindowFlags(windowFlags()&amp;amp;~Q...
QT mainwindow 菜单栏不出现
各位大侠帮忙~~rn刚学习QT,在ubuntu下用Creator简单试了mainwindow,运行出来的结果是菜单栏如果是中文的话,显示的不是乱码,是压根不显示!就跟没有创建菜单一样!英文倒是显示正常...在网上搜了半天也没个结果,哭求解答....
Qt MainWindow 程序主窗口
QMainWindow 是Qt预定义的一个 主窗口类。   下面创建一个主窗口 先新建一个工程。选择桌面应用程序,然后默认,完成创建工程。 #include &quot;mainwindow.h&quot; #include &amp;lt;QApplication&amp;gt; int main(int argc, char *argv[]) { QApplication a(argc, argv); ...
Qt 学习之路 :MainWindow 简介
前面一篇大致介绍了 Qt 各个模块的相关内容,目的是对 Qt 框架有一个高屋建瓴般的了解。从现在开始,我们将开始尝试使用 Qt 开始新的历程。由于我们已经比较详细地介绍过信号槽的相关内容,因此我们可以用一个新的程序开始进一步的学习,同时对信号槽有一个比较深入的理解。QMainWindow是 Qt 框架带来的一个预定义好的主窗口类。所谓主窗口,就是一个普通意义上的应用程序(不是指游戏之类的那种)最顶层
Qt自定义类之自由移动的mainwindow
先要清楚,只是拖动mainwindow你是拖不动那个界面的,但是又想要设计漂亮的无标题栏的控件时,那就需要加自己的重写函数了 一开始我被这个东西给吓到了,因为在网上看了很多人的文章,但是发现我找不到他们是怎么让这个类知道event的,因为大家都是只写了几个类函数,但是就这么结束了???exm??? 壮胆在QT上写下了那个函数名。结果发现那玩意是可以突然变成了斜体!!! 就像这样 这时我...
mainwindow
很好的,欢迎使用,哈哈,分不多,多捧捧场吧,是关于界面的。
Qt在mainwindow下代码添加控件不能显示的问题
以前在dialog或者widget下代码添加控件能显示,但是今天发现在mainwindow下居然不能显示,后来查了资料才知道,需要先定义一个widget,具体代码如下: QWidget *center = new QWidget(this); setCentralWidget(center);
QT中绘制折线图
1、建立qt项目 2、绘图前准备 在ui中添加QGraphicView控件,并提升为QChartView类 ![在最下面找到QGraphicView...
qt中绘制曲线
在qt中绘制过指定点集的曲线 功能:1.过指定点集 2.绘制曲线 可能问题:曲线不够平滑
QT中文字的绘制
为什么要做这次文字的介绍,因为在一般的教材中,还真没有文字的描述:   1.绘制最简单的文字。 我们更改重绘函数如下: void Dialog::paintEvent(QPaintEvent *){QPainter painter(this);painter.drawText(100,100,”yafeilinux”);} 我们在(100,100)的位置显示了一行文字,效果如下。 ...
QT怎样在Dialog中读取mainwindow中的数据
在mainwindow中,打开串口,数据在mainwindow中接收到,那在另外的Dialog中获得前面的数据呢
Qt怎么在mainWindow中调用自定义的类中的函数?
[size=18px]需要在用Qt做好的菜单中点击载入后在中央控件中载入图像,显示图形的cpp文件在另一个自定义类中,用bool类型在自定义的cpp文件中能控制图像的显示与隐藏,将其新建对象并引用放入mainWindow文件中就无法控制显示和隐藏,Qt中应该怎么在mainWindow中调用其它自定义类中的函数?[/size]
QT学习笔记(4):主窗口 MainWindow
添加菜单和工具栏 QMainWindow,普通的QWidget和QDialog都不可以添加 QAction命令: (1)添加Action      通过Action Editor添加      设置好变量名和图标(图标资源需要用qrc文件关联到resourse browser里) (2)把Action拖到菜单或者工具栏里      打开新建的ui文件,左上角输入好之后按两下En
QT——mainwindow使用布局没反应的解决
由于继承的是mainwindow所以必须要知道的是Qmainwindow本身自带一个主窗口centralWidget所以布局需要设置在它的上面,比如如下 QHBoxLayout *layout = new QHBoxLayout(this); layout-&amp;gt;addWidget(ui-&amp;gt;pushButton); layout-&amp;gt;addWidget(ui-&amp;gt...
qt子窗口如何使用mainwindow的成员变量
在mainwindow中定义了一个qvector v,rn在弹出的对话框dialog中想获取这个v中的值,请问如何获取?rn因为vector里是自己声明的结构体,不知道怎么通过参数传递将v或v的指针传给dialog,求大神解答!谢谢!!
关于QT自mainwindow窗口下画图的问题
比如说。我想在mainwindow下画一个矩形,或者显示一幅图片。该怎么做?麻烦各位大侠指导一下!谢谢了!
从MainWindow中动态加载的page中调用MainWindow
写了个在MainWindow grid中动态加载page1的项目,这个page1中用listview来显示数据。现在想在listview中添加一个选中事件SelectionChanged,只要选中listview每一行就会在MainWindow中动态添加两个button。这个选中事件该怎么调用MainWindow呢?
一个基于Qt的主窗口MainWindow
该程序通过对QMainWindow类的继承,实现了一个具有一般功能的主窗口界面
QT mainwindow如何弹出一个子Window
在主窗体上单击一个按钮,如何弹出一个子窗体(自己写的),并且能在这个子窗体上进行操作。rn奶奶的,QT怎么就不能像VS一样智能一点呢
QT 基于mainwindow添加一个文件菜单
QT 基于mainwindow添加一个文件菜单 ,在文件菜单下添加新建和打开选项,以及点击选项后的动作
QT里面widget mainwindow dialog之间的区别
如题。。。我一直挺晕的,只知道mainwindow dialog都是继承自widget的,但是它们之间的区别又在哪里呢???各自有什么作用啊?我觉得mainwindow dialog和widget差不多啊。。。。。求讲解。。
Qt中绘制五子棋棋盘
一个需要做大作业的同学问我相关内容,就顺手写了一个,贴出来。 项目包含头文件 mainwindowh,源文件mainwindow.cpp和主函数main.cpp。 如下: mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include class MainWindow : public
Qt绘制字符串到QPixmap中
QString text = QString::number(5); QFont font; font.setPointSize(9); QFontMetrics fm(font); QPixmap pix(fm.width(text), fm.height()); QRect rect(0, 0, fm.width(text), fm.height()); pix.fill(Qt::trans...
QT中双缓冲加速绘制
QT中的绘制都是在函数paintEvent(QPaintEvent *event)中绘制的,而且必须在这个函数下面绘制。 绘制简单的图形的时候效率还是不错的,但是一旦绘制的内容比较多的时候,绘制的时候就是有些卡顿了。 有的同学就是说,可以使用线程的方式,多开一个线程就可以了,但是大家不要忘了,任何绘制的过程都是在paintEvent(QPaintEvent *event) 这个函数中实现的,...
QT中想在mainwindow里添加widget的函数
我在mainwindow中想添加几个widget函数,例如:rnvoid widget::showEvent(QShowEvent *)rnrn QMessageBox::information(rn this,rn "Information",rn "showEvent!",rn QMessageBox::Ok);rnrn虽然编译通过但貌似没有调用这个函数。rn求各位大神指导一下在mainwindow中怎样添加widget函数或控件?
Qt :在MainWindow中直接添加Layout会无法生效的问题。
问题:在MainWindow中直接添加Layout会无法生效。 解决办法:需要现在MainWindow中添加一个Widget然后再在Widget上添加Layout即可。 1 2 3 QWidget* widget = new QWidget(this); this-&gt;setCentralWidget(widget); widg...
QT 程序默认初始化 有同名的MainWindow
自动生成的主窗体程序中(MainWindow),会有以下几个文件: 细心的人会发现在头文件中,有一个命名空间声明 namespaceUi{ classMainWindow; } 它和自定义的主窗体类同名,主窗体类如下: classMainWindow:publicQMainWindow { ... private: Ui::MainWindow...
Qt 扁平化MainWindow以及自定义标题栏
为了构建出自己认为优雅的界面,需要将Qt自带标题栏啥的去掉。 首先使用Qt Designer创建一个MainWindow的类。mainwindow.h#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>namespace Ui { class MainWindow; }class MainWindow : public
Freetype绘制与Qt绘制对比
目前发现Qt使用freetype绘制出来的效果rn跟使用freetype直接生成的文字图像效果差异很明显 rn感觉 qt绘制有做了一层优化处理。rn不知哪位大神有研究过Qt绘制文字这块 谈谈心得哈。 [img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]
关于Qt MainWindow工程中qPushbutton按钮无法点击的问题
今天根据教程-《Qt开发实例》学习遇到一个问题,当在MainWindow类中添加qPushbutton后,按钮无法用鼠标点击,折腾了很久发现是MainWindow中private预先定义的 Ui::MainWindow *ui 的原因,它通过ui->setupUi(this) 创建了一个位于窗口顶部的栏位,且至于了窗口最顶层,导致后来创建的qPushbutton被覆盖住了,所以无法点击
QT在MainWindow中应用Widget画网格曲线
我正在MainWindow中添加了个Widget,(ˇˍˇ) 想~在Widget中画网格,画曲线,但是不知道怎么写Painter的指针,不太会用PaintEvent,这个Widget应该怎么用啊[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif][/img],
求教 public static string MainWindow => "MainWindow" 中=>的解释
原语句是rnpublic static string MainWindow get return "MainWindow"; rnResharper可以等价改成这样rnpublic static string MainWindow => "MainWindow";rnrn有关Lambda表达式我是有了解和使用的,当然不是很熟悉.所以,想请教下,这个是怎么演变过来的.我比较奇怪的是,这个看起来不是泛型委托,也没有定义委托,那这个是怎么实现的呢?rnrn
Qt(11):QT的绘制系统
[0]:paintter类可以类比为画笔,paintDevice类作为绘制的地点(Qwidiget,QImage都是子类).[1]:自己定义一个窗口类#ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Painttest : public QWidget { Q_OBJE
控制QT中MainWindow上Menu和ToolBar的上下文菜单Action列表
QT在加入dock窗体和ToolBar的时候,会默认加上其相应的Action,当在MainWindow上右击会触发其上下文(默认的Action是他们的windowTitle属性)。那么如何控制不显示,或则定制弹出菜单呢,原来QT早有准备,在这方面预留了 QMenu* MainWindow::createPopupMenu() [virtual] 这个虚函数,用来返回当点击右键时触发要显示的弹出
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数