如何在QT中的其他形式上在Qlabel上设置图像
How to set an Image on QLabel from other form in Qt
在接受主要主题之前,请注意我是QT的初学者。我做了一个addim.cpp,我想在mainwindow的qlabel上设置一个图像。
这是我的来源Addim.cpp
void AddIm::on_pushButton_clicked()
{
MainWindow mainwindow;
mainwindow.setImage();
}
这是mainwindow.cpp
void MainWindow::setImage()
{
QPixmap pix("./test.jpg");
ui->label->setPixmap(pix);
}
和mainwindow.h
class MainWindow : public QMainWindow
{
public:
void setImage();
~ some source ~
private:
Ui::MainWindow *ui;
};
它根本不起作用。因此,我在MainWindow中添加了一个按钮进行测试。当它单击时,设置有效。但是,当我在Addim中执行设置时。它行不通。请让我知道为什么
您的问题与您对QT的知识无关,而是您对C 的了解。
在AddIm::on_pushButton_clicked()
中,您可以在堆栈上创建一个新的MainWindow
对象,创建图像,然后退出函数。
当功能退出时,所有局部堆栈对象都会被破坏。这意味着您的图像确实正在加载,但是在您有机会看到它之前,窗口被破坏了。即使它的寿命比允许的功能更长,您也永远不会显示窗口,因此它仍然隐藏。
更新:
将AddIm.cpp
更改为以下内容:
void AddIm::on_pushButton_clicked()
{
MainWindow *mainwindow = new MainWindow;
mainwindow->setAttribute(Qt::WA_DeleteOnClose, true);
mainwindow->setImage();
mainwindow->show();
}
与您的代码进行比较,以查看您可能出错的地方。我尽可能地尝试像您一样编码它。我几乎不使用设计师,我喜欢对所有内容进行编码。它按预期工作。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QLabel>
#include <QPixmap>
class MainWindow : public QWidget {
Q_OBJECT
public:
void setImage();
private:
QLabel *label;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
void MainWindow::setImage() {
QPixmap pix(":/test.jpg");
label = new QLabel;
label->setPixmap(pix);
label->show();
}
addim.h
#ifndef ADDIM_H
#define ADDIM_H
#include <QMainWindow>
#include <QPushButton>
#include <QHBoxLayout>
#include "mainwindow.h"
class AddIm : public QMainWindow {
Q_OBJECT
public:
AddIm(QWidget *parent = 0);
~AddIm();
private slots:
void on_pushButton_clicked();
private:
QPushButton *button;
};
#endif // ADDIM_H
addim.cpp
#include "addim.h"
AddIm::AddIm(QWidget *parent) : QMainWindow(parent) {
button = new QPushButton("Show Image");
setCentralWidget(button);
connect(button, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
}
void AddIm::on_pushButton_clicked() {
MainWindow mainwindow;
mainwindow.setImage();
}
AddIm::~AddIm() {
}
main.cpp
#include "addim.h"
#include <QApplication>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
AddIm window;
window.show();
return a.exec();
}
您未显示窗口。
首先,您必须创建一个C 类,而不是一个.cpp文件。然后将指针添加到addim.h文件中的窗口:
private:
MainWindow* mainwindow;
然后在您的addim.cpp文件中:
mainwindow = new MainWindow(this);
mainwindow->setAttribute(Qt::WA_DeleteOnClose, true); // prevent memory leak when closing window
mainwindow->setImage();
mainwindow->show();
并记住将MainWindow包含在Addim.h
中#include "mainwindow.h"
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在C++中将自定义文本设置为 QLabel?
- 如何在Qt中为任何QLabel设置可访问的名称,我们可以使用Windows讲述人读取
- 设置Qlabel的输入蒙版
- 如何在 QLabel 中将缩进设置为 QImage
- 当QLabel在Qt中获得QImage时如何设置QSpinBox
- 如何在QLabel的特定坐标中设置QPixmap
- 在 qlabel 中将图像设置为背景并在其顶部设置文本
- 如何在QT中的其他形式上在Qlabel上设置图像
- 如何检查在我的QLabel中设置的图像
- Qt:在Widget内设置QLabel坐标
- 在Qt中以编程方式设置QLabel的像素图
- 在QT框架中设置QLabel的像素图
- 如何将QLabel的大小设置为其像素图中图像的大小?