• 4004阅读
  • 5回复

有關QT3的程式問題 [复制链接]

上一主题 下一主题
离线pkmon
 
只看楼主 倒序阅读 楼主  发表于: 2008-09-18
— 本帖被 XChinux 执行加亮操作(2008-09-20) —
請問各位大大 我想在視窗中設定依個畫布,可是我不會設定它的大小,請問是對setpalette寫大小還是QSizePolicy寫呢?

以下附上我的程式碼

/**bump.cpp**/

#include "bump.h"
#include <qpainter.h>

BumpField::BumpField( QWidget *parent, const char *name )
        : QWidget( parent, name )
{ setPalette(QPalette( QColor( 250, 250, 250)));
  }

void BumpField::paintEvent(QPaintEvent *)
{
QPainter b(this);
b.setBrush(blue);
b.setPen(NoPen);
b.drawRect( 1, 1, 50, 25);
}

QSizePolicy BumpField::sizePolicy() const
{
  return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding);
}


/**bump.h**/

#ifndef BUMP_H
#define BUMP_H
#include <qwidget.h>


class BumpField : public QWidget
{
    Q_OBJECT
public:
    BumpField( QWidget *parent=0, const char *name=0 );

    QSizePolicy sizePolicy() const;


protected:
    void  paintEvent( QPaintEvent * );


};


#endif // CANNON_H


/**main.cpp**/

#include <qapplication.h>
#include <qfont.h>
#include "bump.h"

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

MyWidget::MyWidget( QWidget *parent, const char *name)
        : QWidget( parent, name)
{
    BumpField *bumpField = new BumpField( this, "bumpField");
}

int main( int argc, char **argv )
{
    QApplication::setColorSpec( QApplication::CustomColor );
    QApplication a( argc, argv );

    MyWidget w;
    w.setGeometry(0, 0, 790, 520 );
    a.setMainWidget( &w );
    w.show();
    return a.exec();
}


這樣我跑出來的畫面視窗很大但是畫布只有左上角一小格,請問我如何讓他佔滿整個視窗呢?

离线yfx2003

只看该作者 1楼 发表于: 2008-09-19
不要使用自定义绘制事件,以下是Qt 4的代码——
www.qtcn.org/gpq4/
ajaxref.okajax.com/
离线yfx2003

只看该作者 2楼 发表于: 2008-09-19
引用第1楼yfx2003于2008-09-19 10:23发表的  :
不要使用自定义绘制事件,以下是Qt 4的代码——

  1. /**main.cpp**/
  2. #include <qapplication.h>
  3. #include <qfont.h>
  4. #include <QScrollArea>
  5. #include <QGridLayout>
  6. #include "bump.h"
  7. class MyWidget : public QWidget
  8. {
  9. public:
  10.     MyWidget( QWidget *parent=0, const char *name=0);
  11. };
  12. MyWidget::MyWidget( QWidget *parent, const char *name) : QWidget( parent, name)
  13. {
  14.     BumpField *bumpField = new BumpField(0, "bumpField");//显示窗口
  15.     QScrollArea *glWidgetArea = new QScrollArea(this);//负责显示窗口的缩放
  16.     glWidgetArea->setWidget(bumpField);
  17.     glWidgetArea->setWidgetResizable(true);
  18.     glWidgetArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  19.     glWidgetArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  20.     glWidgetArea->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
  21.     glWidgetArea->setMinimumSize(50, 50);
  22.     QGridLayout *centralLayout = new QGridLayout(this);
  23.     centralLayout->addWidget(glWidgetArea, 0, 0);
  24. }
  25. int main( int argc, char **argv )
  26. {
  27.     QApplication::setColorSpec( QApplication::CustomColor );
  28.     QApplication a( argc, argv );
  29.     MyWidget w;
  30.     w.setGeometry(120, 120, 790, 520 );//让人找不着……
  31.     a.setMainWidget( &w );
  32.     w.show();
  33.     return a.exec();
  34. }
  35. #ifndef BUMP_H
  36. #define BUMP_H
  37. #include <qwidget.h>
  38. class BumpField : public QWidget
  39. {
  40.     Q_OBJECT
  41. public:
  42.     BumpField( QWidget *parent=0, const char *name=0 );
  43.     //QSizePolicy sizePolicy() const;
  44. protected:
  45.     //void  paintEvent( QPaintEvent * );
  46. };
  47. #endif
  48. #include "bump.h"
  49. #include <qpainter.h>
  50. BumpField::BumpField( QWidget *parent, const char *name ) : QWidget( parent, name )
  51. {
  52.     setPalette(QPalette( QColor( 0, 0, 255)));
  53. }
www.qtcn.org/gpq4/
ajaxref.okajax.com/
离线pkmon
只看该作者 3楼 发表于: 2008-09-19
感謝2樓大大的解說

但是小弟我資質愚鈍,還是看不太懂

因為我必需在QT3下執行,所以可以用QT3的程式碼跟我解說嗎?

拜託了~~!!!
离线yfx2003

只看该作者 4楼 发表于: 2008-09-19
呵呵,已经基本上都是 3 和 4 通用的代码,不知道你仔细看了没有……

而且,该注释的地方我已经注释了啊。

另外,能否将你题目修改成能够直接反映自己问题的题目,这样能够更容易引起大家的注意。

如果有Qt 3,估计没有多少人注意了……
www.qtcn.org/gpq4/
ajaxref.okajax.com/
离线yfx2003

只看该作者 5楼 发表于: 2008-09-19
运行效果……


www.qtcn.org/gpq4/
ajaxref.okajax.com/
快速回复
限100 字节
 
上一个 下一个