Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ qlabelshow命令打开新窗口_C++_Qt_Qt5 - Fatal编程技术网

C++ qlabelshow命令打开新窗口

C++ qlabelshow命令打开新窗口,c++,qt,qt5,C++,Qt,Qt5,我创建了一个从QWidget派生的应用程序。当我创建一个QLabel并产生show命令时,它会在一个单独的窗口中打开。我是从QMainWindow派生我的基类的,在这之前工作得很好 #include "widget.h" #include "ui_widget.h" #include <iostream> #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new

我创建了一个从QWidget派生的应用程序。当我创建一个QLabel并产生show命令时,它会在一个单独的窗口中打开。我是从QMainWindow派生我的基类的,在这之前工作得很好

#include "widget.h"
#include "ui_widget.h"
#include <iostream>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    testlabel = new my_qlabel(parent);

    QImage myImage = QImage(QString::fromStdString("D:/Lighthouse.jpg"));
    testlabel->setParent(parent);
    testlabel->name="testName";
    testlabel->setPixmap(QPixmap::fromImage(myImage, Qt::AutoColor));
    testlabel->setGeometry(QRect(500, 500, 100, 100));
    testlabel->show();
    std::cout<<"i am in the output "<<std::endl;
    qDebug() << QString("init");
}

Widget::~Widget()
{
    delete ui;
}

#包括“widget.h”
#包括“ui_widget.h”
#包括
#包括
Widget::Widget(QWidget*父项):
QWidget(母公司),
ui(新ui::小部件)
{
用户界面->设置用户界面(此);
testlabel=新的my_qlabel(父级);
QImage myImage=QImage(QString::fromStdString(“D:/Lighthouse.jpg”);
testlabel->setParent(父级);
testlabel->name=“testName”;
testlabel->setPixmap(QPixmap::fromImage(myImage,Qt::AutoColor));
testlabel->setGeometry(QRect(500500100100));
testlabel->show();
标准::cout
上述内容可能应该改为

testlabel = new my_qlabel(this);
还要确保my_qlabel构造函数正在将其QWidget指针参数向上传递给超类(qlabel?)构造函数。如果忘记这样做,my_qlabel对象将没有父窗口小部件,这将导致它显示为顶级窗口,与您看到的行为相匹配

testlabel->show();
一旦您修复了testlabel的父子问题,这个show()命令就不再是必需的(或合适的),因为您添加到小部件对象的任何子小部件都将在小部件本身首次显示时自动显示()'n()'n。(您唯一需要手动调用show()的时间是如果您以前调用了hide()或者在同一个小部件上设置visible(false),现在您想让它重新出现;或者如果您在父小部件已经在屏幕上可见之后将子小部件添加到其父小部件中;这里的情况也不一样)

上述内容可能应该改为

testlabel = new my_qlabel(this);
还要确保my_qlabel构造函数正在将其QWidget指针参数向上传递给超类(qlabel?)构造函数。如果忘记这样做,my_qlabel对象将没有父窗口小部件,这将导致它显示为顶级窗口,与您看到的行为相匹配

testlabel->show();
一旦您修复了testlabel的父子问题,这个show()命令就不再是必需的(或合适的),因为您添加到小部件对象的任何子小部件都将在小部件本身首次显示时自动显示()'n()'n。(您唯一需要手动调用show()的时间是如果您以前调用了hide()或者在同一个小部件上设置visible(false),现在您想让它重新出现;或者如果您在父小部件已经在屏幕上可见之后将子小部件添加到其父小部件中;这里的情况也不一样)