• 5223阅读
  • 5回复

【提问】QLabel Class的问题 [复制链接]

上一主题 下一主题
离线zzh
 

只看楼主 倒序阅读 楼主  发表于: 2006-03-06
void setText ( const QString & )
该怎么用呀?在
setText("abc");
实验过了不行
QString a = "abc";
setText(a);
也不行
setText(&a);
也不行
也就clear()函数行,
以下是程序代码,如果谁会,能帮我改一下吗?我是C++ QT菜鸟呀。
#include <QApplication>
  #include <QString>
  #include <QPushButton>
  #include <QLabel>
  #include <QVBoxLayout>
  #include <QWidget>

  class MyWidget : public QWidget
  {
  public:
    MyWidget(QWidget *parent = 0);
  };

  MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
  {
    QPushButton *gaibian = new QPushButton("gaibian");
    QLabel *biao = new QLabel("wu");
   
   

    connect(gaibian, SIGNAL(clicked()), biao, SLOT(clear()));
   

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(gaibian);
    layout->addWidget(biao);
   
    setLayout(layout);
  }

  int main(int argc, char *argv[])
  {
    QApplication app(argc, argv);
    MyWidget widget;
    widget.show();
    return app.exec();
  }
[ 此贴被XChinux在2006-03-05 18:23重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2006-03-06
把你的所有源码贴出来看看
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zzh

只看该作者 2楼 发表于: 2006-03-06
上面那个就是全部的了,我是新手,根据demo改写的。就是槽那里好象不对。
离线ziding

只看该作者 3楼 发表于: 2006-03-07
看样子楼主想学习自定义槽的使用,我随手写了点,给LZ参考:
#ifndef __MYWIDGET__
#define __MYWIDGET__

#include <QApplication>
#include <QString>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QWidget>
class MyWidget : public QWidget
{
Q_OBJECT
protected:
  QPushButton *gaibian;
  QLabel *biao;
  QVBoxLayout *layout;
public:
  MyWidget(QWidget *parent = 0);
  public slots:
      void changeText();
};
#endif

到这里保存为文件:mywidget.h
#include "myWidget.h"
void MyWidget::changeText()
      {
      biao->setText("changed text!");
      }

MyWidget::MyWidget(QWidget *parent)
  : QWidget(parent)
{
  gaibian = new QPushButton("gaibian");
  biao = new QLabel("wu");
 
 

  connect(gaibian, SIGNAL(clicked()), this, SLOT(changeText()));
 

  layout = new QVBoxLayout;
  layout->addWidget(gaibian);
  layout->addWidget(biao);
 
  setLayout(layout);
}

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  MyWidget widget;
  widget.show();
  return app.exec();
}

这些内容保存为 mywidget。cpp
然后执行qmake -project
qmake
nmake
就应该OK了。说明:用命令 qmake -project 来生成 qmake 工程文件,然后用
qmake 来生成平台相关的 Makefile
刚开始学习QT,希望各位高手不吝赐教,谢谢~
离线zzh

只看该作者 4楼 发表于: 2006-03-09
谢谢楼上的,原来要自己弄个槽才能实现,直接用还不行,不过文档上写的这个setText()是公共槽呀,同样使公共槽可为什么clear()能直接用呢?

还有个问题,就是,其他的部件是不是不能直接使用的,就要全自己去实现。
离线snow_man_0

只看该作者 5楼 发表于: 2007-10-07
奇怪
//a.h
#include <qapplication.h>
#include <qstring.h>
#include <qpushButton.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qwidget.h>
#include <qlineedit.h>

class MyWidget : public QWidget
{
Q_OBJECT
protected:
    QLineEdit *gaibian;
    QLabel *biao;

public:
     MyWidget(QWidget* parent=0, const char * name = 0);

private slots:
    void changeText()
    {
        biao->setText("changed text!");
    }
};


//a.cpp
#include "a.h"

MyWidget::MyWidget(QWidget* parent, const char * name)     : QWidget(parent,name)
{
//    gaibian = new QPushButton("gaibian",this);
    gaibian = new QLineEdit("gaibian",this);
    biao = new QLabel("wu",this);

    connect(gaibian, SIGNAL( textChanged ( const QString & ) ), biao, SLOT( setText(const QString & ) ) );
   
    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->addWidget(gaibian);
    layout->addWidget(biao);
}


int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  MyWidget w;
  app.setMainWidget(&w);
  w.show();
  return app.exec();
}
-------------------------------------------------------------------------------------
我的版本是3.3.2
都是slot,为什么setText这个slot可以用,但clean这个slot不能用,这个QLabel是不是有点问题?
快速回复
限100 字节
 
上一个 下一个