一个子窗口的指针在调用它的QLabel指针就死掉了
class QClock:public QWidget
{
Q_OBJECT
public:
QClock(QWidget *parent=0);
~QClock();
QLabel *min_1;
QLabel *min_2;
QLabel *g;
QLabel *se_1;
QLabel *se_2;
void get_time(int times,QClock *pa);
private:
void paintEvent(QPaintEvent *event);
};
这是主窗体中放置的一个子窗体。
在主窗体的构造函数中我申请了这个窗体的指针变量,布局好了。
QClock *positiveWidget=new QClock();
void Mainwindow::timeupdates()
{
QString a;
int min,se;
if(second<180)
second++;
min=(180-second)/60;
se=(180-second)%60;
a=QString(":/clock/%1").arg(min);
m_critical=m_rotate=second;
update();
if(second==0)
timer->stop();
positiveWidget->min_1->setPixmap(a);
}
上面是一个定时器触发后的槽函数,在最后一句我想给窗体中的min_1这个Label替换图片,就是死在这一句了,我调试了下,看不到min_1的值,为什么会这样,这个窗体指针不能使用它里面所包含的的所有子部件吗?请问我现在想实现怎样才是正确的写法。 --------------------编程问答-------------------- 定时器什么时候触发,你的min_1确定初始化了吗? --------------------编程问答--------------------
QLabel *min_1;
QLabel *min_2;
QLabel *g;
QLabel *se_1;
QLabel *se_2;
楼主的这些指针没有实例化,先new后看看怎么样
如:
QLabel *min_1 = new QLabel;
如果不想实例化的话,就不要用指针,如:
QLabel min_1;--------------------编程问答--------------------
有的,只是不在主窗体的构造函数里面;
QClock *positiveWidget=new QClock();//申请完整个窗体指针
在QClock的构造函数如下
QClock::QClock(QWidget *parent)
:QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint);
min_1=new QLabel();
min_2=new QLabel();
g=new QLabel();
se_1=new QLabel();
se_2=new QLabel();
因为对标签要初始化贴上图片,所以在QClock构造函数里面就new了。那不是申请窗体指针这些QLabel不就分配内存了,而且定时器触发的槽函数是在按下按钮才开始及时的,这是主窗体都初始化完了,这样的写法是不正确的?我试过如果把这些变量定义在主窗体类里面是可以的,但是我用这个QClock类包装起来,因为在窗体里面要用到这样的2个窗体,这样就不用申请2倍的这种标签,思想没错吧,这指针怎么就错了... --------------------编程问答--------------------
指针有实例化的,在QClock里面用new申请内存了,那为什么我在这句
QClock *positiveWidget=new QClock();
后使用 positiveWidget->min_1->setPixmap(a);就死掉了
调试查看的值显示min_1为<unavailable synchronous data>什么问题? --------------------编程问答--------------------
看看是不是权限问题,public还是private --------------------编程问答--------------------
我在最上面都给出了类,都是设为public;写成这种方式吗a->b->()...从语法角度上有问题? --------------------编程问答--------------------
指针有实例化的,在QClock里面用new申请内存了,那为什么我在这句
QClock *positiveWidget=new QClock();
后使用 positiveWidget->min_1->setPixmap(a);就死掉了
调试查看的值显示min_1为<unavailable synchronous data>什么问题?
看看是不是权限问题,public还是private
我在最上面都给出了类,都是设为public;写成这种方式吗a->b->()...从语法角度上有问题?
想玩Qt,C++基础打扎实了就会很容易上手的。 --------------------编程问答-------------------- 怎么死的?有信息吗?
a=QString(":/clock/%1").arg(min);
positiveWidget->min_1->setPixmap(a);
这里a 是QString的,应该是图片格式吧 例如":/clock/60.png"
这里setPixmap 的类型是QPixmap吧
positiveWidget->min_1->setPixmap(QPixmap(a)); --------------------编程问答--------------------
怎么死的?有信息吗?
a=QString(":/clock/%1").arg(min);
positiveWidget->min_1->setPixmap(a);
这里a 是QString的,应该是图片格式吧 例如":/clock/60.png"
这里setPixmap 的类型是QPixmap吧
positiveWidget->min_1->setPixmap(QPixmap(a));
图片使用没有问题,我是放在资源文件里面改成数字的别名,所以不需要后缀。是调试到这里,min_1查看不了值,但是构造函数里面已经用new申请空间了。
补充:移动开发 , Qt