Qt基础:七、QPushButton、QCheckBox.QRadioButton 和 QGroupBox、QLineEdit

2023-11-06

按钮部件的基类是QAbstractButton类,提供了按钮的通用功能。
QAbstractButton类的子类包括复选框QCheckBox,标准按钮QPushButton,单选框按钮QRadioButton和工具按钮QToolButton。

1、QPushButton

1、下面选中checkable属性使得它可以拥有“选中”和“未选中两种状态;
在这里插入图片描述
在这里插入图片描述

void MyWidget::on_pushBtn1_toggled(bool checked)
{
    qDebug() << tr("按钮是否按下:") << checked;
}

第一次点击按键被按下去打印的checked为true,再次点击按键被松开打印的checked为false

2、选中 flat 属性可以不显示该按钮的边框。
在这里插入图片描述
在这里插入图片描述
可以看到中间的按键没有边框

ui->pushBtn1->setText(tr("&nihao"));   // 这样便指定了Alt+N为加速键
ui->pushBtn2->setText(tr("帮助(&H)"));
ui->pushBtn2->setIcon(QIcon("../mybutton/images/help.png"));
ui->pushBtn3->setText(tr("z&oom"));
QMenu *menu = new QMenu(this);
menu->addAction(QIcon("../mybutton/images/zoom-in.png"), tr("放大"));
ui->pushBtn3->setMenu(menu);

其中代码里为3个按钮改变了显示文本,在一个字母前加上“&”符号,则可以将这个按钮的加速键设置为 Alt 加上这个字母(软件运行后可作为快捷键使用)。如果要在文本中显示“&”符号,可以使用“&&”。
可使用 setIcon()函数来给按钮添加图标,这里的图片文件使用了相对路径(当然也可以在设计模式通过更改 icon 属性来实现)。对于 pushBtn3,这里为其添加了下拉菜单,现在这个菜单什么功能也没实现

2、QCheckBox.QRadioButton 和 QGroupBox

对于调查表之类的应用,往往提供多个选项供选择,有些是可以选择多项的,有些只能选择其中一项。
复选框QCheckBox类提供了同时选择多项的功能
QRadioButton提供了只能选择一项的功能,一般要把一组按钮放到一个QGroupBox中来管理
在设计模式时可往界面上拖人两个GroupBox,将它们的标题分别改为“复选框”和“单选框”。然后往复选框中拖入3个Check Box,分别更改显示内容为“跑步”“踢球”和“游泳”。再往单选框中拖入3个RadioButton分别更改其显示内容为“很好”“一般”和“不好”。这里还可以选中Check Box的tristate属性让它拥有不改变状态,选中状态和未选中状态3种状态。对于选择按钮后的操作,可以关联它们的 stateChanged()信号和自定义的槽,也可以使用isChecked()函数查看一个按钮是否被选中。除了GroupBox,还可以使用QButtonGroup类来管理多个按钮。
在这里插入图片描述

在这里插入图片描述

3、QLineEdit

行编辑器QLineEdit有4种显示模式(echoMode),可以在echoMode 属性中更改它们,分别是:Normal正常显示输入的信息;NoEcho不显示任何输人,这样可以保证不泄露输入的字符位数;Password 显示为密码样式,就是以小黑点或星号之类的字符代替输人的字符;PasswordEchoOnEdit在编辑时显示正常字符其他情况下显示为密码样式。这里设置lineEditl的echoMode为Password。
在这里插入图片描述
另外一种限定,比如对IP的限制,通过下面这种可以对输入的IP进行校验,如果IP输入不对则禁止输入了

QRegExp rx("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b");
    ui->lineEdit_decIp->setValidator(new QRegExpValidator(rx, this));
    ui->lineEdit_encIp->setValidator(new QRegExpValidator(rx, this));
    ui->lineEdit_gatewayIp->setValidator(new QRegExpValidator(rx, this));
    ui->lineEdit_netmask->setValidator(new QRegExpValidator(rx, this));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt基础:七、QPushButton、QCheckBox.QRadioButton 和 QGroupBox、QLineEdit 的相关文章

  • Q风格所有权

    在 Qt 应用程序中使用样式时 我遇到了一个有趣的问题QStyle所有权 QStyle继承自QObject 通常接受QObject parent作为构造函数参数来管理其子级的生命周期 但QStyle的构造函数没有此构造函数参数 第一个问题
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • QObject 通用信号处理程序

    信号处理程序 是指插槽 而不是 POSIX 信号的处理程序 我需要 连接 可能不会 using QObject connect直接地 所有信号从 QObject 的 未知 子类的实例到一个单槽另一个 QObject 的 我需要这个才能通过网
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • 使用 QGraphicsScene 和 QGraphicsView 在 Qt 中开始基于 Tile 的游戏

    我将开始在 Qt 中编写基于 2D 图块的游戏 并阅读 QGraphicsScene 和 QGraphicsView 类 这些类旨在显示和处理大量 2D 对象 我的问题是 使用 QGraphicsScene 创建一个包含大量图块的世界是否可
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • 相对文件路径的区别:Qt Creator的调试模式和发布模式

    QFile file test txt if file open QIODevice ReadOnly qDebug lt lt You got me 我在用 Qt 4 8 6 与 MSVC 2010 Qt 创建者 3 1 1 Window
  • 仅具有年/月视图的 PyQt 日历

    在 Qt Designer 中 QDateTimeEdit 具有日历视图选项 通过设置显示格式 我只能显示月 年 但是 当用户单击视图时 它会自动显示每日日历 有没有办法让它只显示月 年日历 为了形象地解释一下 Windows 日历具有与
  • 从 QWebEngineView 或 QWebEnginePage 中删除滚动条

    有没有办法删除滚动条QWebEngineView或者我可以以某种方式访问 它的 ScrollArea 吗 使用 webkit 就这么简单 WebView gt page gt setScrollBarPolicy Qt Vertical Q
  • QComboBox:仅在展开时显示图标

    从 正常 开始QCombobox 我想要一个QCombobox仅在展开时显示图标 但在折叠时不显示图标 我找到了类似问题的几个答案 但它们都显示了更复杂情况的代码 而我还没有设法提炼出它的核心 我见过两种方法 QListView或使用QIt
  • QDateTime::fromstring( __DATE__, "MMM d yyyy") 返回无效

    解析MSVC 预定义 DATE 也许结合 TIME 宏与 QDateTime fromstring 不返回任何内容 无效的 QDateTime 对象 为什么 From http msdn microsoft com en us librar
  • qtcreator中C++14的编译

    我有一个 qt 项目 其中包含以下部分C 14 最近 我改变了我的 ubuntu 发行版 现在我有 16 04 LTS 并且安装了 Qt Creator 4 02 建于 6 月 13 日 为了启用C 14编译 我放入项目文件中 QMAKE
  • 如何释放Qthread对象的内存?

    我做过这样的事情 in the mainwindow s constructor QThread thr new QThread soundWorker work new soundWorker connect this SIGNAL pl
  • QSettings - ini 文件的位置在哪里?

    我在用着QSettings在 Windows 中将一些数据存储为 ini 文件 我想查看ini文件 但我不知道ini文件的位置在哪里 这是我的代码 QSettings set new QSettings QSettings IniForma
  • Row 和 RowLayout 有什么区别?

    这按预期工作Row 但不与RowLayout 为什么 两者有什么区别 ApplicationWindow title Testing width 640 height 480 RowLayout Row anchors fill paren
  • 如何将 qmake 转换为 cmake?

    我有一个 pro我的项目上的文件 但现在我想将其移植到CMakeLists txt文件 我怎样才能做到这一点 QT core QT gui CONFIG c 11 TARGET test CONFIG console CONFIG app
  • 防止 QGraphicsItem 移出 QGraphicsScene

    我有一个场景 其固定尺寸从 0 0 到 481 270 scene gt setSceneRect 0 0 481 270 在里面 我有一个习惯GraphicsItem多亏了旗帜我可以移动它ItemisMovable 但我希望它留在场景中
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实

随机推荐