QFrameクラスの学習ノート

1. QFrameの役割

       QFrame クラスは QWidget クラスを継承し、QAbstractScrollArea、QLabel、QLCDNumber、QSplitter、QStackedWidget、および QToolBox によって継承されます。QFrame は、多くの基本コントロールの基本クラスとして、サブクラスのフレーム スタイルのデザインを実装するための多くのメンバー メソッドをサブクラスに提供します。フレーム スタイルは主に、フレームの形状と、フレームを周囲のウィジェットから視覚的に分離するために使用されるシャドウ スタイルで構成されます。今すぐ

  1. QFrame は、サブクラスのフレーム スタイルを設計するためのメンバー関数を提供し、サブクラスが独自のスタイル (盛り上がった境界線、沈んだ境界線、盛り上がったコンテンツ、または沈んだコンテンツなど) を設計できるようにします。
  2. QFrame を直接使用して、コンテンツを含まない単純なプレースホルダー フレームを作成することもできます。

2. QFrame メンバー タイプのドキュメント

     2.1 列挙型 QFrame::Shadow   

         この列挙型は、フレームに 3D 効果を提供するために使用されるシャドウのタイプを定義します。

Qフレーム::プレーン 0x0010 境界線またはコンテンツが周囲のコントロールと同じ高さで表示される
Qフレーム::レイズド 0x0020 周囲のコントロールに比べて境界線またはコンテンツが盛り上がって見える
QFrame::沈んだ 0x0030 境界線やコンテンツが周囲のコントロールに比べてくぼんで見える

     2.2 列挙型 QFrame::Shape

                この列挙型は、使用可能なフレームの形状を定義します。

QFrame::NoFrame 何も描かないでください
Qフレーム::ボックス 0x0001 コンテンツを囲む境界線を描画し、境界線の影の効果を強調します。
QFrame::パネル 0x0002 コンテンツ プレーンを描画して、コンテンツのシャドウ効果を強調します。
QFrame::StyledPanel 0x0006 現在の GUI スタイルに応じて外観が異なる長方形のパネルを描画します。盛り上がったり沈んだりすることもあります。
QFrame::HLine 0x0004 水平線を引いて、線の影効果を分離して強調します。
QFrame::VLine 0x0005 垂直線を引いて線を分離し、その線の影効果を強調します。
QFrame::WinPanel 0x0003 Windows 2000 のように上下に移動できる長方形のパネルを描画します。この形状を指定すると、線幅が 2 ピクセルに設定されます。WinPanel は互換性のために提供されています。

 GUI スタイルに依存しないようにするには、代わりに StyledPanel を使用することをお勧めします。

   2.3 列挙型 QFrame::StyleMask

          この列挙は、frameStyle() の 2 つのコンポーネントを抽出するために使用できる 2 つの定数を定義します。

QFrame::Shadow_Mask 0x00f0 コントロールのframStyle()戻り値のシャドウ部分
QFrame::Shape_Mask 0x000f コントロールのframStyle()戻り値の形状部分

   2.4 QFrame を使用して実現できるスタイルの組み合わせ

3. QFrame のよく使われるメンバー関数

     3.1 メンバー関数プロトタイプの概要

 

メンバー関数のプロトタイプ  説明する
QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) コンストラクタ
仮想 ~QFrame()      デストラクター
 QRect FrameRect() const        QFrameのフレームサイズを取得する
void setFrameRect(const QRect &) QFrameのフレームサイズを設定する
QFrame::Shadow FrameShadow() const 影のスタイルを取得し、
void setFrameShadow(QFrame::Shadow) 影のスタイルを設定し、
QFrame::Shape FrameShape() const フレームの形状を取得する
void setFrameShape(QFrame::Shape) フレームの形状を設定する
int FrameStyle() const フレームの形状と影のスタイルを取得する
void setFrameStyle(int スタイル) フレームの形状と影のスタイルを設定します
int lineWidth() const 枠線の幅を取得する
 void setLineWidth(int) 枠線の幅を設定する
int midLineWidth() const フレームの中心線の幅を取得します
void setMidLineWidth(int) 枠の中心線の幅を設定します

   3.2 簡単な例

       QFrame のサブクラスである QLabel を使用して、シンプルなログイン インターフェイスのデザインを完成させます。QLabel フレーム スタイルを変更することで、QLineEdit、QPushButton、その他のコントロールのスタイルとの一貫性が高まります。

 

//.h文件
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
 
    QLabel *useLabel;
    QLabel *pwLabel;
    QLabel *useEdit;
    QLabel *pwEdit;
    QLabel *checkBtn;
    QLabel *cancelBtn;
 
};
 
//.c文件
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->resize(400,550);
    useLabel = new QLabel(this);
    useLabel->setText("用户名:");
    useLabel->move(70,150);
    useLabel->resize(50,30);
    //设置"用户名"标签的框架样式为 无边框+无阴影
    useLabel->setFrameShape(QFrame::NoFrame);
    useLabel->setFrameShadow(QFrame::Plain);
 
    useEdit = new QLabel(this);
    useEdit->move(150,150);
    useEdit->resize(200,30);
    //设置"用户名"输入框的框架样式为 边框+突起
    useEdit->setFrameStyle(QFrame::Box|QFrame::Raised);
    useEdit->setLineWidth(2);
 
 
    pwLabel = new QLabel(this);
    pwLabel->setText("密码:");
    pwLabel->move(70,210);
    pwLabel->resize(50,30);
    //设置"密码"标签的框架样式为 无边框+无阴影
    pwLabel->setFrameStyle(QFrame::NoFrame|QFrame::Plain);
 
    pwEdit = new QLabel(this);
    pwEdit->move(150,210);
    pwEdit->resize(200,30);
    //设置"用户名"输入框的框架样式为 内容+凹陷
    pwEdit->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    pwEdit->setLineWidth(2);
 
    checkBtn = new QLabel(this);
    checkBtn->setText("确认");
    checkBtn->setAlignment(Qt::AlignCenter);
    checkBtn->move(100,290);
    checkBtn->resize(80,30);
    //设置"确认"按钮的框架样式为 内容+突起
    checkBtn->setFrameStyle(QFrame::Panel|QFrame::Raised);
    checkBtn->setLineWidth(3);
 
 
    cancelBtn = new QLabel(this);
    cancelBtn->setText("取消");
    cancelBtn->setAlignment(Qt::AlignCenter);
    cancelBtn->move(240,290);
    cancelBtn->resize(80,30);
    //设置"取消"按钮的框架样式为 内容+突起
    cancelBtn->setFrameStyle(QFrame::Panel|QFrame::Raised);
    cancelBtn->setLineWidth(3);
 
}
 
 
 

レンダリング:

おすすめ

転載: blog.csdn.net/weiweiqiao/article/details/133325675