16,211
社区成员
发帖
与我相关
我的任务
分享
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);
}
QClock *positiveWidget=new QClock();
后使用 positiveWidget->min_1->setPixmap(a);就死掉了
调试查看的值显示min_1为<unavailable synchronous data>什么问题?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倍的这种标签,思想没错吧,这指针怎么就错了...QLabel *min_1;
QLabel *min_2;
QLabel *g;
QLabel *se_1;
QLabel *se_2;
楼主的这些指针没有实例化,先new后看看怎么样
如:QLabel *min_1 = new QLabel;
如果不想实例化的话,就不要用指针,如:
QLabel min_1;