Qt教程-三,按钮QPushButton

本文介绍了Qt中的按钮概念,包括QPushButton的作用,以及如何在Qt界面中通过UI设计和代码创建按钮。重点讲述了如何使用QSS样式进行按钮美化,包括设置背景颜色和圆角。
摘要由CSDN通过智能技术生成

目录

一,什么是按钮,他有什么作用

二,Qt中的普通按钮-QPushButton

三,如何在Qt界面上创建出按钮

1,使用ui界面进行拖拽

2,用代码创建按钮

四,按钮美化。

1,使用ui界面来进行按钮美化

2,使用代码对按钮进行美化


一,什么是按钮,他有什么作用

       按钮通俗的说就是,可以给用户功能提示,并且能够点击它,点击它后会帮助我们做一些事情。

比如:我们QQ的登录界面,有一个大大的蓝色的登录按钮,通过该按钮上的文字,我们知道点击它实现的功能就是登录。 当我们点击后,就会弹出聊天界面了

比如,微信的登录按钮

二,Qt中的普通按钮-QPushButton

QPushButton 类间接继承自 QWidget 类,它的继承关系如下:

QPushButton 继承于 QAbstractButton 继承于 QWidget

三,如何在Qt界面上创建出按钮

在Qt界面上创建出按钮有两种方式,一是ui界面中直接拖拽,二是用代码创建。

1,使用ui界面进行拖拽

       这里默认大家已经创建号一个Qt项目了(如果不会创建项目,可以看看我前面的文章,哪里有完整的Qt项目创建教程)

(1)双击项目的 .ui文件,双击后会出现ui设计器界面

出现设计器界面

(2)找到Push Button,将其拖拽到ui界面上

自此,我们便已经创建了一个按钮了

运行一下,结果:

2,用代码创建按钮

    //创建按钮(this的意思为将按钮的父对象设置为当前窗口,这样设置的好处是,当我们关闭窗口时,会自动释放该按钮的控件,避免内存泄漏)

    QPushButton * btn_1 = new QPushButton(this);

    //设置按钮宽高
    btn_1->resize(400,30);

    //设置按钮位置
    btn_1->move(100,100);

    //设置按钮文本
    btn_1->setText("代码创建的按钮");

解释: 

设置按钮的宽高,是按钮本身,我们设置了后,按钮的宽就为400,高就为30

设置按钮位置,其标准为当前窗口,位置为x=100,y=100处。

设置按钮文本,就是改变按钮上的字。

可以发现,我们用代码创建按钮比较麻烦,而使用UI界面设计的时,所见即所得,按钮大小,按钮位置直接拖放就行了。

四,按钮美化。

       我们创建了按钮,但是发现,这个按钮于QQ,微信的登录按钮,差距很大,它们有颜色,有变化,还有圆角。而我们的按钮很原始。所以下面是按钮的简单美化。

       按钮美化一般可以使用Qt的QSS样式来美化,QSS样式会在后面的文章中讲到,此处大家只要会用一点简单的就行。

我们仍然是以,UI设计界面,和纯代码两方面来实现。

1,使用ui界面来进行按钮美化

右键点击按钮,选择“改变样式表”,点击添加颜色,选择background-color,也就是背景颜色。

运行效果:

我们发现,QQ的登录按钮还有圆角,所以,这里设置圆角。

border-radius: 10px;

border-radius: 10px; 意思是设置按钮每条边的顶角一个弯曲半径,这个半径不能大于按钮最小的边长的一般。比如我的按钮高30,那么我的圆角半径最多就 15。

运行效果:圆角出现了

2,使用代码对按钮进行美化

// 设置按钮的样式
   btn_1->setStyleSheet("QPushButton {"
                             "background-color: rgb(193, 255, 253);"
                             "border-radius: 15px;"
                        "}");

运行效果:

后续添加,请稍等待,,,,,,,,,,,

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中使用ROS2,可以使用rclcpp库连接ROS2。要实现按钮切换,可以通过以下步骤实现: 1.创建一个Qt应用程序,并添加一个QPushButton控件。 2.在应用程序中创建一个ROS2节点,使用rclcpp库连接ROS2。 3.在QPushButton控件的槽函数中,实现ROS2话题发布器的开启和关闭。 下面是一个示例代码: ```cpp #include <QApplication> #include <QPushButton> #include <iostream> #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" class MyNode : public rclcpp::Node { public: MyNode() : Node("my_node") { publisher_ = this->create_publisher<std_msgs::msg::String>("topic", 10); timer_ = this->create_wall_timer(std::chrono::seconds(1), std::bind(&MyNode::timer_callback, this)); } private: void timer_callback() { auto message = std_msgs::msg::String(); message.data = "Hello, world!"; publisher_->publish(message); } rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_; rclcpp::TimerBase::SharedPtr timer_; }; int main(int argc, char** argv) { QApplication app(argc, argv); // 创建ROS2节点 rclcpp::init(argc, argv); auto node = std::make_shared<MyNode>(); // 创建QPushButton控件 QPushButton button("Toggle Publisher", nullptr); bool publisher_running = false; QObject::connect(&button, &QPushButton::clicked, [&]() { if (publisher_running) { // 关闭ROS2话题发布器 publisher_running = false; std::cout << "Stopping publisher..." << std::endl; } else { // 开启ROS2话题发布器 publisher_running = true; std::cout << "Starting publisher..." << std::endl; } }); button.show(); // 进入Qt主循环 int result = app.exec(); // 关闭ROS2节点 rclcpp::shutdown(); return result; } ``` 在这个示例中,我们创建了一个名为"MyNode"的ROS2节点,并在定时器回调函数中发布了一个字符串消息。然后,我们在QPushButton控件的槽函数中切换了ROS2话题发布器的开启和关闭状态。最后,我们进入Qt主循环,等待用户交互事件的发生。 注意:为了使ROS2节点能够正常工作,需要在终端中运行ROS2系统的核心组件(如roscore)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值