• QT系列第1节 QT中窗口使用简介


         QT中窗口按照使用场景分类,可以分成两大类,一类是独立显示的窗口,主要是 QWidget ,QDialog ,QMainWindow,一类是嵌套在别的窗口的子窗口,包含各种控件以及子窗口,窗口类图如下:

    本篇文章只介绍 QWidget  QDialog  QMainWindow 这三个类。

    目录

    1. QWidget类

    1.1 构造方法

    1.2 public方法

    1.3 信号

    1.4 槽

    2. QMainWindow类

    2.1 构造方法

    2.2 public方法

    2.3 信号

    2.4 槽

    3. QDialog类

    3.1 构造方法

    3.2 public方法

    3.3 信号

    3.4 槽

    4.使用举例

    4.1 Qt Creator使用注意点

    4.2 QWidget使用

    4.3 QMainWindow使用

    4.4 QDialog使用


    1. QWidget类

    1.1 构造方法

     QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

    1.2 public方法

    1. bool acceptDrops() const
    2. QString accessibleDescription() const
    3. QString accessibleName() const
    4. QList actions() const
    5. void activateWindow()
    6. void addAction(QAction *action)
    7. QAction *addAction(const QString &text)
    8. QAction *addAction(const QIcon &icon, const QString &text)
    9. QAction *addAction(const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
    10. QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
    11. QAction *addAction(const QString &text, Args &&... args)
    12. QAction *addAction(const QIcon &icon, const QString &text, Args &&... args)
    13. QAction *addAction(const QString &text, const QKeySequence &shortcut)
    14. QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut)
    15. QAction *addAction(const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
    16. QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
    17. QAction *addAction(const QString &text, const QKeySequence &shortcut, Args &&... args)
    18. QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, Args &&... args)
    19. void addActions(const QList &actions)
    20. void adjustSize()
    21. bool autoFillBackground() const
    22. QPalette::ColorRole backgroundRole() const
    23. QBackingStore *backingStore() const
    24. QSize baseSize() const
    25. QWidget *childAt(int x, int y) const
    26. QWidget *childAt(const QPoint &p) const
    27. QRect childrenRect() const
    28. QRegion childrenRegion() const
    29. void clearFocus()
    30. void clearMask()
    31. QMargins contentsMargins() const
    32. QRect contentsRect() const
    33. Qt::ContextMenuPolicy contextMenuPolicy() const
    34. QCursor cursor() const
    35. WId effectiveWinId() const
    36. void ensurePolished() const
    37. Qt::FocusPolicy focusPolicy() const
    38. QWidget *focusProxy() const
    39. QWidget *focusWidget() const
    40. const QFont &font() const
    41. QFontInfo fontInfo() const
    42. QFontMetrics fontMetrics() const
    43. QPalette::ColorRole foregroundRole() const
    44. QRect frameGeometry() const
    45. QSize frameSize() const
    46. const QRect &geometry() const
    47. QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
    48. void grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())
    49. void grabKeyboard()
    50. void grabMouse()
    51. void grabMouse(const QCursor &cursor)
    52. int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
    53. QGraphicsEffect *graphicsEffect() const
    54. QGraphicsProxyWidget *graphicsProxyWidget() const
    55. bool hasEditFocus() const
    56. bool hasFocus() const
    57. virtual bool hasHeightForWidth() const
    58. bool hasMouseTracking() const
    59. bool hasTabletTracking() const
    60. int height() const
    61. virtual int heightForWidth(int w) const
    62. Qt::InputMethodHints inputMethodHints() const
    63. virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
    64. void insertAction(QAction *before, QAction *action)
    65. void insertActions(QAction *before, const QList &actions)
    66. bool isActiveWindow() const
    67. bool isAncestorOf(const QWidget *child) const
    68. bool isEnabled() const
    69. bool isEnabledTo(const QWidget *ancestor) const
    70. bool isFullScreen() const
    71. bool isHidden() const
    72. bool isMaximized() const
    73. bool isMinimized() const
    74. bool isModal() const
    75. bool isVisible() const
    76. bool isVisibleTo(const QWidget *ancestor) const
    77. bool isWindow() const
    78. bool isWindowModified() const
    79. QLayout *layout() const
    80. Qt::LayoutDirection layoutDirection() const
    81. QLocale locale() const
    82. QPointF mapFrom(const QWidget *parent, const QPointF &pos) const
    83. QPoint mapFrom(const QWidget *parent, const QPoint &pos) const
    84. QPointF mapFromGlobal(const QPointF &pos) const
    85. QPoint mapFromGlobal(const QPoint &pos) const
    86. QPointF mapFromParent(const QPointF &pos) const
    87. QPoint mapFromParent(const QPoint &pos) const
    88. QPointF mapTo(const QWidget *parent, const QPointF &pos) const
    89. QPoint mapTo(const QWidget *parent, const QPoint &pos) const
    90. QPointF mapToGlobal(const QPointF &pos) const
    91. QPoint mapToGlobal(const QPoint &pos) const
    92. QPointF mapToParent(const QPointF &pos) const
    93. QPoint mapToParent(const QPoint &pos) const
    94. QRegion mask() const
    95. int maximumHeight() const
    96. QSize maximumSize() const
    97. int maximumWidth() const
    98. int minimumHeight() const
    99. QSize minimumSize() const
    100. virtual QSize minimumSizeHint() const
    101. int minimumWidth() const
    102. void move(const QPoint &)
    103. void move(int x, int y)
    104. QWidget *nativeParentWidget() const
    105. QWidget *nextInFocusChain() const
    106. QRect normalGeometry() const
    107. void overrideWindowFlags(Qt::WindowFlags flags)
    108. const QPalette &palette() const
    109. QWidget *parentWidget() const
    110. QPoint pos() const
    111. QWidget *previousInFocusChain() const
    112. QRect rect() const
    113. void releaseKeyboard()
    114. void releaseMouse()
    115. void releaseShortcut(int id)
    116. void removeAction(QAction *action)
    117. void render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
    118. void render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
    119. void repaint(int x, int y, int w, int h)
    120. void repaint(const QRect &rect)
    121. void repaint(const QRegion &rgn)
    122. void resize(const QSize &)
    123. void resize(int w, int h)
    124. bool restoreGeometry(const QByteArray &geometry)
    125. QByteArray saveGeometry() const
    126. QScreen *screen() const
    127. void scroll(int dx, int dy)
    128. void scroll(int dx, int dy, const QRect &r)
    129. void setAcceptDrops(bool on)
    130. void setAccessibleDescription(const QString &description)
    131. void setAccessibleName(const QString &name)
    132. void setAttribute(Qt::WidgetAttribute attribute, bool on = true)
    133. void setAutoFillBackground(bool enabled)
    134. void setBackgroundRole(QPalette::ColorRole role)
    135. void setBaseSize(const QSize &)
    136. void setBaseSize(int basew, int baseh)
    137. void setContentsMargins(int left, int top, int right, int bottom)
    138. void setContentsMargins(const QMargins &margins)
    139. void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
    140. void setCursor(const QCursor &)
    141. void setEditFocus(bool enable)
    142. void setFixedHeight(int h)
    143. void setFixedSize(const QSize &s)
    144. void setFixedSize(int w, int h)
    145. void setFixedWidth(int w)
    146. void setFocus(Qt::FocusReason reason)
    147. void setFocusPolicy(Qt::FocusPolicy policy)
    148. void setFocusProxy(QWidget *w)
    149. void setFont(const QFont &)
    150. void setForegroundRole(QPalette::ColorRole role)
    151. void setGeometry(const QRect &)
    152. void setGeometry(int x, int y, int w, int h)
    153. void setGraphicsEffect(QGraphicsEffect *effect)
    154. void setInputMethodHints(Qt::InputMethodHints hints)
    155. void setLayout(QLayout *layout)
    156. void setLayoutDirection(Qt::LayoutDirection direction)
    157. void setLocale(const QLocale &locale)
    158. void setMask(const QBitmap &bitmap)
    159. void setMask(const QRegion ®ion)
    160. void setMaximumHeight(int maxh)
    161. void setMaximumSize(const QSize &)
    162. void setMaximumSize(int maxw, int maxh)
    163. void setMaximumWidth(int maxw)
    164. void setMinimumHeight(int minh)
    165. void setMinimumSize(const QSize &)
    166. void setMinimumSize(int minw, int minh)
    167. void setMinimumWidth(int minw)
    168. void setMouseTracking(bool enable)
    169. void setPalette(const QPalette &)
    170. void setParent(QWidget *parent)
    171. void setParent(QWidget *parent, Qt::WindowFlags f)
    172. void setScreen(QScreen *screen)
    173. void setShortcutAutoRepeat(int id, bool enable = true)
    174. void setShortcutEnabled(int id, bool enable = true)
    175. void setSizeIncrement(const QSize &)
    176. void setSizeIncrement(int w, int h)
    177. void setSizePolicy(QSizePolicy)
    178. void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
    179. void setStatusTip(const QString &)
    180. void setStyle(QStyle *style)
    181. void setTabletTracking(bool enable)
    182. void setToolTip(const QString &)
    183. void setToolTipDuration(int msec)
    184. void setUpdatesEnabled(bool enable)
    185. void setWhatsThis(const QString &)
    186. void setWindowFilePath(const QString &filePath)
    187. void setWindowFlag(Qt::WindowType flag, bool on = true)
    188. void setWindowFlags(Qt::WindowFlags type)
    189. void setWindowIcon(const QIcon &icon)
    190. void setWindowModality(Qt::WindowModality windowModality)
    191. void setWindowOpacity(qreal level)
    192. void setWindowRole(const QString &role)
    193. void setWindowState(Qt::WindowStates windowState)
    194. void setupUi(QWidget *widget)
    195. QSize size() const
    196. virtual QSize sizeHint() const
    197. QSize sizeIncrement() const
    198. QSizePolicy sizePolicy() const
    199. void stackUnder(QWidget *w)
    200. QString statusTip() const
    201. QStyle *style() const
    202. QString styleSheet() const
    203. bool testAttribute(Qt::WidgetAttribute attribute) const
    204. QString toolTip() const
    205. int toolTipDuration() const
    206. bool underMouse() const
    207. void ungrabGesture(Qt::GestureType gesture)
    208. void unsetCursor()
    209. void unsetLayoutDirection()
    210. void unsetLocale()
    211. void update(int x, int y, int w, int h)
    212. void update(const QRect &rect)
    213. void update(const QRegion &rgn)
    214. void updateGeometry()
    215. bool updatesEnabled() const
    216. QRegion visibleRegion() const
    217. QString whatsThis() const
    218. int width() const
    219. WId winId() const
    220. QWidget *window() const
    221. QString windowFilePath() const
    222. Qt::WindowFlags windowFlags() const
    223. QWindow *windowHandle() const
    224. QIcon windowIcon() const
    225. Qt::WindowModality windowModality() const
    226. qreal windowOpacity() const
    227. QString windowRole() const
    228. Qt::WindowStates windowState() const
    229. QString windowTitle() const
    230. Qt::WindowType windowType() const
    231. int x() const
    232. int y() const

    1.3 信号

    1. void customContextMenuRequested(const QPoint &pos)
    2. void windowIconChanged(const QIcon &icon)
    3. void windowTitleChanged(const QString &title)

    1.4 槽

    1. bool close()
    2. void hide()
    3. void lower()
    4. void raise()
    5. void repaint()
    6. void setDisabled(bool disable)
    7. void setEnabled(bool)
    8. void setFocus()
    9. void setHidden(bool hidden)
    10. void setStyleSheet(const QString &styleSheet)
    11. virtual void setVisible(bool visible)
    12. void setWindowModified(bool)
    13. void setWindowTitle(const QString &)
    14. void show()
    15. void showFullScreen()
    16. void showMaximized()
    17. void showMinimized()
    18. void showNormal()
    19. void update()

    2. QMainWindow

    2.1 构造方法

    QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

    2.2 public方法

    1. void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
    2. void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)
    3. void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
    4. void addToolBar(QToolBar *toolbar)
    5. QToolBar *addToolBar(const QString &title)
    6. void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea)
    7. QWidget *centralWidget() const
    8. Qt::DockWidgetArea corner(Qt::Corner corner) const
    9. virtual QMenu *createPopupMenu()
    10. QMainWindow::DockOptions dockOptions() const
    11. Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const
    12. bool documentMode() const
    13. QSize iconSize() const
    14. void insertToolBar(QToolBar *before, QToolBar *toolbar)
    15. void insertToolBarBreak(QToolBar *before)
    16. bool isAnimated() const
    17. bool isDockNestingEnabled() const
    18. QMenuBar *menuBar() const
    19. QWidget *menuWidget() const
    20. void removeDockWidget(QDockWidget *dockwidget)
    21. void removeToolBar(QToolBar *toolbar)
    22. void removeToolBarBreak(QToolBar *before)
    23. void resizeDocks(const QList &docks, const QList<int> &sizes, Qt::Orientation orientation)
    24. bool restoreDockWidget(QDockWidget *dockwidget)
    25. bool restoreState(const QByteArray &state, int version = 0)
    26. QByteArray saveState(int version = 0) const
    27. void setCentralWidget(QWidget *widget)
    28. void setCorner(Qt::Corner corner, Qt::DockWidgetArea area)
    29. void setDockOptions(QMainWindow::DockOptions options)
    30. void setDocumentMode(bool enabled)
    31. void setIconSize(const QSize &iconSize)
    32. void setMenuBar(QMenuBar *menuBar)
    33. void setMenuWidget(QWidget *menuBar)
    34. void setStatusBar(QStatusBar *statusbar)
    35. void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)
    36. void setTabShape(QTabWidget::TabShape tabShape)
    37. void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)
    38. void splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)
    39. QStatusBar *statusBar() const
    40. QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const
    41. QTabWidget::TabShape tabShape() const
    42. QList tabifiedDockWidgets(QDockWidget *dockwidget) const
    43. void tabifyDockWidget(QDockWidget *first, QDockWidget *second)
    44. QWidget *takeCentralWidget()
    45. Qt::ToolBarArea toolBarArea(const QToolBar *toolbar) const
    46. bool toolBarBreak(QToolBar *toolbar) const
    47. Qt::ToolButtonStyle toolButtonStyle() const
    48. bool unifiedTitleAndToolBarOnMac() const

    2.3 信号

    1. void iconSizeChanged(const QSize &iconSize)
    2. void tabifiedDockWidgetActivated(QDockWidget *dockWidget)
    3. void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)

    2.4 槽

    1. void setAnimated(bool enabled)
    2. void setDockNestingEnabled(bool enabled)
    3. void setUnifiedTitleAndToolBarOnMac(bool set)

    3. QDialog类

    3.1 构造方法

     QDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

    3.2 public方法

    1. bool isSizeGripEnabled() const
    2. int result() const
    3. void setModal(bool modal)
    4. void setResult(int i)
    5. void setSizeGripEnabled(bool)

    3.3 信号

    1. void accepted()
    2. void finished(int result)
    3. void rejected()

    3.4 槽

    1. virtual void accept()
    2. virtual void done(int r)
    3. virtual int exec()
    4. virtual void open()
    5. virtual void reject()

    4.使用举例

    4.1 Qt Creator使用注意点

    (1)QT designer界面介绍

     (2)布局管理

    水平布局

    垂直布局

    网格布局

    表格布局:和网格布局类似,一般使用网格布局就够了

    打破布局:

    实际业务开发中,主窗口是要设置布局的,不然某些控件可能不能显示,或者改变窗口控件大小不能自适应,这一点在开发中要注意

     (3)修改程序左上角图标

     (4)UI设计方式

    UI设计可以使用designer设计,也可以通过编写代码设计,有些UI设计designer实现不了,所有的UI都可以通过代码来实现,在实际开发中,一般以两种结合实现UI效果。

    (5)UI designer转到槽

    鼠标选中控件,右键菜单“转到槽”,选择槽函数,就会进入代码编写页面

     

     

     (5)显示console并在其中输出qDebug信息

    步骤一:.pro文件中增加: CONFIG += console

    步骤二:如下选项打勾

    4.2 QWidget使用

     如下程序演示点击按钮获取输入框信息,并弹出消息框显示输出内容,运行效果如下:

    代码:

    工程文件:

    1. QT += core gui
    2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    3. CONFIG += c++17 console
    4. # You can make your code fail to compile if it uses deprecated APIs.
    5. # In order to do so, uncomment the following line.
    6. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
    7. SOURCES += \
    8. main.cpp \
    9. widget.cpp
    10. HEADERS += \
    11. widget.h
    12. FORMS += \
    13. widget.ui
    14. RC_ICONS = MainIcon.ico
    15. # Default rules for deployment.
    16. qnx: target.path = /tmp/$${TARGET}/bin
    17. else: unix:!android: target.path = /opt/$${TARGET}/bin
    18. !isEmpty(target.path): INSTALLS += target

     窗口头文件,窗口实现文件,主调文件内容如下:

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. QT_BEGIN_NAMESPACE
    5. namespace Ui { class Widget; }
    6. QT_END_NAMESPACE
    7. class Widget : public QWidget
    8. {
    9. Q_OBJECT
    10. public:
    11. Widget(QWidget *parent = nullptr);
    12. ~Widget();
    13. private slots:
    14. void on_pushButtonGet_clicked();
    15. private:
    16. Ui::Widget *ui;
    17. };
    18. #endif // WIDGET_H
    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. #include
    4. #include
    5. Widget::Widget(QWidget *parent)
    6. : QWidget(parent)
    7. , ui(new Ui::Widget)
    8. {
    9. ui->setupUi(this);
    10. }
    11. Widget::~Widget()
    12. {
    13. delete ui;
    14. }
    15. void Widget::on_pushButtonGet_clicked()
    16. {
    17. QString strInput = ui->lineEditInput->text();
    18. qDebug() << strInput;
    19. QMessageBox::information(this, "提示", strInput);
    20. }
    1. #include "widget.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. Widget w;
    7. w.show();
    8. return a.exec();
    9. }

    4.3 QMainWindow使用

    如下程序演示继承QMainWindow类,不用Qt designer通过手写代码的方式添加布局和控件,效果展示如下:

    代码如下:

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. class MainWindow : public QMainWindow
    9. {
    10. Q_OBJECT
    11. public:
    12. MainWindow(QWidget *parent = nullptr);
    13. ~MainWindow();
    14. private:
    15. void initUI();
    16. void initSignalSlot();
    17. private slots:
    18. void on_under_line(bool sel);
    19. void on_italic(bool sel);
    20. void on_bold(bool sel);
    21. void set_text_font_color();
    22. private:
    23. QCheckBox * m_checkBoxUnderLine;
    24. QCheckBox * m_checkBoxItalic;
    25. QCheckBox * m_checkBoxBold;
    26. QRadioButton * m_rBtnBlack;
    27. QRadioButton * m_rBtnBlue;
    28. QRadioButton * m_rBtnRed;
    29. QPlainTextEdit * m_palinTextEdit;
    30. QPushButton * m_pushBtnOK;
    31. QPushButton * m_pushBtnCancel;
    32. QPushButton * m_pushBtnClose;
    33. };
    34. #endif // MAINWINDOW_H
    1. #include "mainwindow.h"
    2. #include
    3. #include
    4. #include
    5. MainWindow::MainWindow(QWidget *parent)
    6. : QMainWindow(parent)
    7. {
    8. initUI();
    9. initSignalSlot();
    10. }
    11. void MainWindow::initUI()
    12. {
    13. /*
    14. if (this->objectName().isEmpty())
    15. {
    16. this->setObjectName("MainWindow");
    17. this->resize(555, 412);
    18. }
    19. */
    20. m_checkBoxUnderLine = new QCheckBox(tr("UnderLine"));
    21. m_checkBoxItalic = new QCheckBox(tr("Italic"));
    22. m_checkBoxBold = new QCheckBox(tr("Bold"));
    23. QHBoxLayout *hLayout1 = new QHBoxLayout;
    24. hLayout1->addWidget(m_checkBoxUnderLine);
    25. hLayout1->addWidget(m_checkBoxItalic);
    26. hLayout1->addWidget(m_checkBoxBold);
    27. m_rBtnBlack = new QRadioButton(tr("Black"));
    28. m_rBtnBlue = new QRadioButton(tr("Blue"));
    29. m_rBtnRed = new QRadioButton(tr("Red"));
    30. QHBoxLayout *hLayout2 = new QHBoxLayout;
    31. hLayout2->addWidget(m_rBtnBlack);
    32. hLayout2->addWidget(m_rBtnBlue);
    33. hLayout2->addWidget(m_rBtnRed);
    34. m_palinTextEdit = new QPlainTextEdit(tr(""));
    35. QFont font = m_palinTextEdit->font();
    36. font.setPointSize(20);
    37. m_palinTextEdit->setFont(font);
    38. m_palinTextEdit->setPlainText("QT\n\n你好啊\n\n很高兴认识你!");
    39. m_pushBtnOK = new QPushButton(tr("Ok"));
    40. m_pushBtnCancel = new QPushButton(tr("Cancel"));
    41. m_pushBtnClose = new QPushButton(tr("Close"));
    42. QHBoxLayout *hLayout3 = new QHBoxLayout;
    43. hLayout3->addStretch();
    44. hLayout3->addWidget(m_pushBtnOK);
    45. hLayout3->addWidget(m_pushBtnCancel);
    46. hLayout3->addStretch();
    47. hLayout3->addWidget(m_pushBtnClose);
    48. QVBoxLayout *vLayout = new QVBoxLayout;
    49. vLayout->addLayout(hLayout1);
    50. vLayout->addLayout(hLayout2);
    51. vLayout->addWidget(m_palinTextEdit);
    52. vLayout->addLayout(hLayout3);
    53. //说明直接调用setLayout窗口显示不出控件,原因是MainWindow已经
    54. //有默认的layout了,此处我们新建一个QWidget,然后让MainWindow
    55. //将新建的QWidget来安装,然后在新建的QWidget中进行相关布局
    56. //setLayout(vLayout);
    57. QWidget *widget = new QWidget(this);
    58. widget->setLayout(vLayout);
    59. setCentralWidget(widget);
    60. }
    61. void MainWindow::initSignalSlot()
    62. {
    63. connect(m_checkBoxUnderLine, SIGNAL(clicked(bool)), this, SLOT(on_under_line(bool)));
    64. connect(m_checkBoxItalic, SIGNAL(clicked(bool)), this, SLOT(on_italic(bool)));
    65. connect(m_checkBoxBold, SIGNAL(clicked(bool)), this, SLOT(on_bold(bool)));
    66. connect(m_rBtnBlack, SIGNAL(clicked()), this, SLOT(set_text_font_color()));
    67. connect(m_rBtnBlue, SIGNAL(clicked()), this, SLOT(set_text_font_color()));
    68. connect(m_rBtnRed, SIGNAL(clicked()), this, SLOT(set_text_font_color()));
    69. connect(m_pushBtnOK, SIGNAL(clicked()), this, SLOT(accept()));
    70. connect(m_pushBtnCancel, SIGNAL(clicked()), this, SLOT(reject()));
    71. connect(m_pushBtnClose, SIGNAL(clicked()), this, SLOT(close()));
    72. }
    73. void MainWindow::on_under_line(bool sel)
    74. {
    75. QFont font = m_palinTextEdit->font();
    76. font.setUnderline(sel);
    77. m_palinTextEdit->setFont(font);
    78. }
    79. void MainWindow::on_italic(bool sel)
    80. {
    81. QFont font = m_palinTextEdit->font();
    82. font.setItalic(sel);
    83. m_palinTextEdit->setFont(font);
    84. }
    85. void MainWindow::on_bold(bool sel)
    86. {
    87. QFont font = m_palinTextEdit->font();
    88. font.setBold(sel);
    89. m_palinTextEdit->setFont(font);
    90. }
    91. void MainWindow::set_text_font_color()
    92. {
    93. QPalette plet = m_palinTextEdit->palette();
    94. if (m_rBtnBlack->isChecked()) {
    95. plet.setColor(QPalette::Text, Qt::black);
    96. }
    97. else if (m_rBtnBlue->isChecked()) {
    98. plet.setColor(QPalette::Text, Qt::blue);
    99. }
    100. else {
    101. plet.setColor(QPalette::Text, Qt::red);
    102. }
    103. m_palinTextEdit->setPalette(plet);
    104. }
    105. MainWindow::~MainWindow()
    106. {
    107. }
    1. #include "mainwindow.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. MainWindow w;
    7. w.show();
    8. return a.exec();
    9. }

    4.4 QDialog使用

    如下程序演示使用QDialog制作一个大小固定的登录窗口,效果显示如下:

     界面布局如下:

    代码如下:

    1. #ifndef LOGIN_H
    2. #define LOGIN_H
    3. #include
    4. namespace Ui {
    5. class Login;
    6. }
    7. class Login : public QDialog
    8. {
    9. Q_OBJECT
    10. public:
    11. explicit Login(QWidget *parent = nullptr);
    12. ~Login();
    13. private:
    14. Ui::Login *ui;
    15. };
    16. #endif // LOGIN_H
    1. #include "login.h"
    2. #include "ui_login.h"
    3. Login::Login(QWidget *parent) :
    4. QDialog(parent),
    5. ui(new Ui::Login)
    6. {
    7. ui->setupUi(this);
    8. setFixedSize(399, 318);
    9. }
    10. Login::~Login()
    11. {
    12. delete ui;
    13. }
    1. #include "login.h"
    2. #include "ui_login.h"
    3. Login::Login(QWidget *parent) :
    4. QDialog(parent),
    5. ui(new Ui::Login)
    6. {
    7. ui->setupUi(this);
    8. setFixedSize(399, 318);
    9. }
    10. Login::~Login()
    11. {
    12. delete ui;
    13. }

  • 相关阅读:
    Leetcode 386. 字典序排数
    Qt之submodule编译
    Python入门 函数 基础入门篇
    AUTOSAR汽车电子嵌入式编程精讲300篇-基于嵌入式惯导技术的移动靶车设计
    MCU(单片机)datasheet(规格说明书)
    SpringBoot【2022年最新面试题】
    浏览器自动播放音视频-前端实现方案
    猿创征文|Docker部署Oracle 19C及最佳实践
    今天就分享一段话
    【sdk】- 对接阿里云抠图
  • 原文地址:https://blog.csdn.net/hsy12342611/article/details/128160252