关于QT中使用pixmap进行图片的切换问题
本帖最后由 Lvren 于 2013-1-19 21:10 编辑关于槽的写法~如何使得一张图片通过按键切换为另一张图片~用槽写完后用不用在进行一次界面布局?现在每次执行程序就崩溃~
主要是槽的部分的写法不懂~
#include <QtGui>
#include <QPixmap>
#include "picturechange.h"
PictureChange::PictureChange(QWidget *parent) : QDialog(parent)
{
//QString picName;
picName="/home/common/my_program/picture/picture.jpg";
QLabel *label=new QLabel;
button_change=new QPushButton("change");
button_quit=new QPushButton("quit");
connect(button_change,SIGNAL(clicked()),this,SLOT(change_clicked()));
connect(button_quit,SIGNAL(clicked()),this,SLOT(close()));
pixmap=new QPixmap;
pixmap->load(picName);
label->setPixmap(*pixmap);
QVBoxLayout *leftlayout=new QVBoxLayout;
leftlayout->addWidget(button_change);
leftlayout->addWidget(button_quit);
leftlayout->addStretch();
QHBoxLayout *toplayout=new QHBoxLayout;
toplayout->addLayout(leftlayout);
toplayout->addWidget(label);
//label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
//label->setScaledContents(true);
//label->resize(window->size());
setLayout(toplayout);
setWindowTitle("picture change");
//setFixedHeight(sizeHint(),height());
}
void PictureChange::change_clicked()
{
QString picpath1,picpath2;
//QPixmap *pixmap;
picpath1="/home/common/my_program/picture/picture.jpg";
picpath2="/home/common/my_program/picture/picture2.jpg";
//QMessageBox::warning(this,"warning","change button is clickded");
//pixmap=new QPixmap(picpath2);
pixmap->load(picpath2);
label->setPixmap(*pixmap);
}
坐等大神赐教 贴代码贴全哦,崩溃的情况很多时候都是对象被提前析构了,但是后边又对它进行操作引起的
话说你这个能编译通过么
QLabel *label=new QLabel;这段声明的是局部变量
你下面那个函数里的label跟上边的函数里的label不是同一个 crysislinux 发表于 2013-1-19 22:29 static/image/common/back.gif
贴代码贴全哦,崩溃的情况很多时候都是对象被提前析构了,但是后边又对它进行操作引起的
话说你这个能编译 ...
#ifndef PICTURECHANGE_H
#define PICTURECHANGE_H
#include <QDialog>
class QPushButton;
class QLabel;
class PictureChange:public QDialog
{
Q_OBJECT
public:
PictureChange(QWidget *parent=0);
private slots:
void change_clicked();
private:
QString picName;
QLabel *label;
QPixmap *pixmap;
QPushButton *button_change;
QPushButton *button_quit;
};
#endif // PICTURECHANGE_H
下面是主函数
#include <QApplication>
#include "picturechange.h"
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
PictureChange *dialog = new PictureChange;
dialog->show();
return app.exec();
}
Lvren 发表于 2013-1-19 22:37 static/image/common/back.gif
#ifndef PICTURECHANGE_H
#define PICTURECHANGE_H
我感觉是你点按钮切换的时候会崩溃吧
还是我之前说的那个问题
你最上面贴出来的函数里边
QLabel *label=new QLabel;
这个label是局部变量,你应该用类定义的变量,把QLabel *去掉。你现在这样其实在切换图像的函数里用的label指针是一个随机的指针,当然要崩溃 crysislinux 发表于 2013-1-20 09:23 static/image/common/back.gif
我感觉是你点按钮切换的时候会崩溃吧
还是我之前说的那个问题
你最上面贴出来的函数里边
问题解决了,受教了,thank you!
页:
[1]