<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Qt4 小部件 > 原文: [http://zetcode.com/gui/qt4/widgets/](http://zetcode.com/gui/qt4/widgets/) 在 Qt4 C++ 編程教程的這一部分中,我們將討論一些基本的 Qt4 小部件。 小部件是 GUI 應用的基本構建塊。 Qt4 庫具有豐富的各種小部件集。 ## `QLabel` `QLabel`用于顯示文本和圖像。 沒有用戶交互。 以下示例顯示文本。 `label.h` ```cpp #pragma once #include <QWidget> #include <QLabel> class Label : public QWidget { public: Label(QWidget *parent = 0); private: QLabel *label; }; ``` 這是我們的代碼示例的頭文件。 `label.cpp` ```cpp #include <QVBoxLayout> #include <QFont> #include "label.h" Label::Label(QWidget *parent) : QWidget(parent) { QString lyrics = "Who doesn't long for someone to hold\n\ Who knows how to love you without being told\n\ Somebody tell me why I'm on my own\n\ If there's a soulmate for everyone\n\ \n\ Here we are again, circles never end\n\ How do I find the perfect fit\n\ There's enough for everyone\n\ But I'm still waiting in line\n\ \n\ Who doesn't long for someone to hold\n\ Who knows how to love you without being told\n\ Somebody tell me why I'm on my own\n\ If there's a soulmate for everyone"; label = new QLabel(lyrics, this); label->setFont(QFont("Purisa", 10)); QVBoxLayout *vbox = new QVBoxLayout(); vbox->addWidget(label); setLayout(vbox); } ``` 我們使用`QLabel`小部件在窗口中顯示歌詞。 ```cpp label = new QLabel(lyrics, this); label->setFont(QFont("Purisa", 10)); ``` 我們創建一個標簽小部件并為其設置特定的字體。 `main.cpp` ```cpp #include <QApplication> #include <QTextStream> #include "label.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Label window; window.setWindowTitle("QLabel"); window.show(); return app.exec(); } ``` 這是主文件。 ![QLabel](https://img.kancloud.cn/e9/08/e908815a7fbca07b7711fea31a1f0784_359x369.jpg) 圖:`QLabel` ## `QSlider` `QSlider`是具有簡單句柄的小部件。 該手柄可以前后拉動。 這樣,我們可以為特定任務選擇一個值。 `slider.h` ```cpp #pragma once #include <QWidget> #include <QSlider> #include <QLabel> class Slider : public QWidget { Q_OBJECT public: Slider(QWidget *parent = 0); private: QSlider *slider; QLabel *label; }; ``` 該示例的頭文件。 `slider.cpp` ```cpp #include "slider.h" #include <QHBoxLayout> Slider::Slider(QWidget *parent) : QWidget(parent) { QHBoxLayout *hbox = new QHBoxLayout(this); slider = new QSlider(Qt::Horizontal , this); hbox->addWidget(slider); label = new QLabel("0", this); hbox->addWidget(label); connect(slider, SIGNAL(valueChanged(int)), label, SLOT(setNum(int))); } ``` 我們顯示兩個小部件:一個滑塊和一個標簽。 滑塊控制標簽中顯示的數字。 ```cpp slider = new QSlider(Qt::Horizontal , this); ``` 將創建水平`QSlider`。 ```cpp connect(slider, SIGNAL(valueChanged(int)), label, SLOT(setNum(int))); ``` 在此代碼行中,我們將`valueChanged()`信號連接到標簽的內置`setNum()`槽。 `main.cpp` ```cpp #include <QApplication> #include "slider.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Slider window; window.setWindowTitle("QSlider"); window.show(); return app.exec(); } ``` 這是主文件。 ![QSlider](https://img.kancloud.cn/53/f8/53f8a458c37ed03db7cbfd1619749716_202x69.jpg) 圖:`QSlider` ## `QSpinBox` `QSpinbox`是一個小部件,用于處理整數和離散值集。 在我們的代碼示例中,我們將有一個`QSpinbox`小部件。 我們可以選擇數字`0..99`。 當前選擇的值顯示在標簽窗口小部件中。 `spinbox.h` ```cpp #pragma once #include <QWidget> #include <QSpinBox> class SpinBox : public QWidget { Q_OBJECT public: SpinBox(QWidget *parent = 0); private: QSpinBox *spinbox; }; ``` 這是`QSpinbox`示例的頭文件。 `spinbox.cpp` ```cpp #include "spinbox.h" #include <QHBoxLayout> #include <QLabel> SpinBox::SpinBox(QWidget *parent) : QWidget(parent) { QHBoxLayout *hbox = new QHBoxLayout(this); hbox->setSpacing(15); spinbox = new QSpinBox(this); QLabel *lbl = new QLabel("0", this); hbox->addWidget(spinbox); hbox->addWidget(lbl); connect(spinbox, SIGNAL(valueChanged(int)), lbl, SLOT(setNum(int))); } ``` 我們在窗口上放置一個旋轉框,并將其`valueChanged()`信號連接到`QLabel`的`setNum()`槽。 `main.cpp` ```cpp #include <QApplication> #include "spinbox.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); SpinBox window; window.resize(250, 150); window.setWindowTitle("QSpinBox"); window.show(); return app.exec(); } ``` 這是主文件。 ![QSpinBox](https://img.kancloud.cn/f9/bd/f9bd611fdcbdc819048c5ededccbe45d_252x176.jpg) 圖:`QSpinBox` ## `QLineEdit` `QLineEdit`是一個小部件,允許輸入和編輯單行純文本。 `QLineEdit`小部件具有撤消/重做,剪切/粘貼和拖放功能。 在我們的示例中,我們顯示了三個標簽和三行編輯。 `ledit.h` ```cpp #pragma once #include <QWidget> class Ledit : public QWidget { public: Ledit(QWidget *parent = 0); }; ``` 該示例的頭文件。 `ledit.cpp` ```cpp #include <QGridLayout> #include <QLabel> #include <QLineEdit> #include "ledit.h" Ledit::Ledit(QWidget *parent) : QWidget(parent) { QLabel *name = new QLabel("Name:", this); name->setAlignment(Qt::AlignRight | Qt::AlignVCenter); QLabel *age = new QLabel("Age:", this); age->setAlignment(Qt::AlignRight | Qt::AlignVCenter); QLabel *occupation = new QLabel("Occupation:", this); occupation->setAlignment(Qt::AlignRight | Qt::AlignVCenter); QLineEdit *le1 = new QLineEdit(this); QLineEdit *le2 = new QLineEdit(this); QLineEdit *le3 = new QLineEdit(this); QGridLayout *grid = new QGridLayout(); grid->addWidget(name, 0, 0); grid->addWidget(le1, 0, 1); grid->addWidget(age, 1, 0); grid->addWidget(le2, 1, 1); grid->addWidget(occupation, 2, 0); grid->addWidget(le3, 2, 1); setLayout(grid); } ``` 我們顯示三個標簽和三行編輯。 這些小部件由`QGridLayout`管理器組織。 `main.cpp` ```cpp #include "ledit.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); Ledit window; window.setWindowTitle("QLineEdit"); window.show(); return app.exec(); } ``` 這是主文件。 ![QLineEdit](https://img.kancloud.cn/5f/e3/5fe36ca5cab630ddccc9463b3c2c8f92_231x141.jpg) 圖:`QLineEdit` ## 狀態欄 狀態欄是一個面板,用于顯示有關應用的狀態信息。 在我們的示例中,我們有兩個按鈕和一個狀態欄。 如果我們單擊每個按鈕,則會顯示一條消息。 狀態欄小部件是`QMainWindow`小部件的一部分。 `statusbar.h` ```cpp #pragma once #include <QMainWindow> #include <QPushButton> class Statusbar : public QMainWindow { Q_OBJECT public: Statusbar(QWidget *parent = 0); private slots: void OnOkPressed(); void OnApplyPressed(); private: QPushButton *okBtn; QPushButton *aplBtn; }; ``` 該示例的頭文件。 `statusbar.cpp` ```cpp #include <QLabel> #include <QFrame> #include <QStatusBar> #include "statusbar.h" Statusbar::Statusbar(QWidget *parent) : QMainWindow(parent) { QFrame *frame = new QFrame(this); setCentralWidget(frame); QHBoxLayout *hbox = new QHBoxLayout(frame); okBtn = new QPushButton("OK", frame); hbox->addWidget(okBtn, 0, Qt::AlignLeft | Qt::AlignTop); aplBtn = new QPushButton("Apply", frame); hbox->addWidget(aplBtn, 1, Qt::AlignLeft | Qt::AlignTop); statusBar(); connect(okBtn, SIGNAL(clicked()), this, SLOT(OnOkPressed())); connect(aplBtn, SIGNAL(clicked()), this, SLOT(OnApplyPressed())); } void Statusbar::OnOkPressed() { statusBar()->showMessage("OK button pressed", 2000); } void Statusbar::OnApplyPressed() { statusBar()->showMessage("Apply button pressed", 2000); } ``` 這是`statusbar.cpp`文件。 ```cpp QFrame *frame = new QFrame(this); setCentralWidget(frame); ``` `QFrame`小部件放在`QMainWindow`小部件的中心區域。 中心區域只能容納一個小部件。 ```cpp okBtn = new QPushButton("OK", frame); hbox->addWidget(okBtn, 0, Qt::AlignLeft | Qt::AlignTop); aplBtn = new QPushButton("Apply", frame); hbox->addWidget(aplBtn, 1, Qt::AlignLeft | Qt::AlignTop); ``` 我們創建兩個`QPushButton`小部件,并將它們放置在水平框中。 按鈕的父項是框架窗口小部件。 ```cpp statusBar(); ``` 要顯示狀態欄小部件,我們調用`QMainWindow`小部件的`statusBar()`方法。 ```cpp void Statusbar::OnOkPressed() { statusBar()->showMessage("OK button pressed", 2000); } ``` `showMessage()`方法在狀態欄上顯示該消息。 最后一個參數指定消息在狀態欄上顯示的毫秒數。 `main.cpp` ```cpp #include <QApplication> #include "statusbar.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Statusbar window; window.resize(300, 200); window.setWindowTitle("QStatusBar"); window.show(); return app.exec(); } ``` 這是主文件。 ![Statusbar example](https://img.kancloud.cn/40/90/4090369abae3548eb3260a1c82fb5d3f_302x226.jpg) 圖:狀態欄示例 在 Qt4 教程的這一部分中,我們介紹了幾個 Qt4 小部件。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看