javaswing 点击按钮切换到另外一个窗口_Qt5+VS2015实例:一步一步教你写一个数值进制转换的小例子...

搞硬件开发的小伙伴们,对于数值不同进制之间的转换是经常用到的一个小功能,如输入一个十进制整数,要求能够迅速得到其二进制、十六进制的数值等。

在这篇文章中,给大家演示下如何使用Qt5.9界面库,在VS2015的IDE编程环境中,通过代码来简单实现这样的一个小工具例子吧。

1、实例说明

软件运行界面如图所示:

c61a4fd3eb4f859e0bb4e2f7529f9633.png

软件主界面包括左右两部分,左边是一个工具栏,右边是主显示窗口,通过在工具栏中选择不同的选项,在主窗口显示相应的内容,下方是一个状态栏。本例较为简单,在工具栏上仅有三个选项,点击“退出程序”按钮时退出整个程序,点击“欢迎使用”按钮时显示数值进制转换的操作窗口,点击“软件说明”按钮时则显示软件的辅助说明信息,如下图所示:

3da326aadb16b00a727314813162acf5.png

下面说下这个例子的详细编程步骤。

2、实例实现过程

(1) 创建Qt项目工程

打开Visual Sudio 2015,选择文件菜单,新建一个的Qt项目,项目类型选择Qt GUI Application,入项目名称为MyDemo。

(2) 编辑界面文件

项目创建完毕后,在方案资源管理器中双击“MyWnd.ui”,自动在Qt设计师中打开该界面文件,编辑完成后的主界面如下图所示:

7b8fa917297c76c726e71763b116b693.png

该界面中的对象及布局情况如下图所示,主窗口MyWnd其基类为QMainWindow,主窗口上包括中心部件(centralWidget)、工具栏(mainToolBar)及状态栏(statasBar)三部分。

22d7e8651bf6eb1fe97ed350dca384e9.png

其中,中心部件(centralWidget)使用垂直布局,上面为一QLabel部件,下面为一QStackedWidget部件,在QStackedWidget部件中创建两个页面,分别显示主操作页面及软件说明页面。两个页面(page及page_2)的部件及布局情况从上图中可以清晰的看出来。

工具栏上放置三个按钮,其功能可由动作编辑器中实现,如下图所示:

634ebd1246c48861a59772051d643481.png

需要的图标资源可在资源浏览器中编辑完成,如下图所示:

86bb3799ace62983944f5b82fb22ecbd.png

退出按钮的功能直接在信号与槽编辑器中完成,如下图所示:

531be014ac31a307891d9d7b4e530ef2.png

(3) 代码功能实现

本例主要实现工具栏上两个按钮的切换功能(显示不同的页面)及当输入数值改变时实现实时进制转换功能,因此在“MyWnd.h”头文件中,在“private slots:”区域定义了两个槽函数分别响应这两个事件,另外,自定义了两个字符串类型的私有变量“curNumVal”和“ curNumType”分别保存当前界面上输入的数值及当前数值的类型,自定义了一个私有函数“getResult()”做进制转换功能的实现,如下图所示:

2c2f74729d81aa6a2bb35b0d795adee5.png

在实现文件MyWnd.cpp”中,添加信号与槽函数的关联及槽函数的具体功能实现。

其中,在构造函数中代码如下图所示:

1f0e46a3ebcfaf9ccb4c0e3df7b36555.png

上面代码中主要完成的功能为:变量初始化(11、12行)、工具栏上按钮的互斥设置(14-16行)、状态栏提示信息设置(17行)、数值输入的两个控件的动态属性设置(18、19行,在槽函数中用来区分事件源)及槽函数的关联(21-26行)。

函数具体实现代码如下图所示:

0b89586e3651b5deb15ef30052a7b30e.png

代码简要解释如下:

第29-34行,当点击工具栏不同按钮时实现主显示窗口的页面切换。

第36-43行,当改变数值的值或类型时实现实时进制转换功能,这儿用到了这两个控件的动态属性,用以区分当前哪个控件产生了事件。

第45-71行,数值不同进制的具体转换功能实现,并在文本框窗口上进行显示。这儿用到了比较灵活的QMap类,用以存储当前的进制名称及数值,使用QString类的toInt及setNum函数进行字符串与数值进制之间的转换。其中第65-70行使用foreach对map元素进行索引,分别转换为不同的进制,这段代码也可改写为下面的形式,实现同样的功能:

4d06a86adc51ace5edec5c07a094a779.png

至此,项目功能就完成了,编译运行程序,在主界面上实时改变当前输入的数值或当前数值的类型,都会在显示窗口实时显示出当前数值的其它进制值。

3、总结

这个例子比较小巧简单,但涉及的内容还是比较多,如Qt的设计师的使用、工具栏/状态栏的使用、数值与字符串之间的转换、多个控制关联一个槽函数的方法等内容。

大家加关注并私信回复:qt023,可获取该工程的源代码下载。

本文由编码那些事原创,请关注+转发+收藏+点赞,带你一起长知识!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java Swing中打开一个新的窗口,并获取父窗口中的文本框内容,可以使用以下步骤: 1. 在父窗口中创建文本框,并设置其名称或ID,以便在子窗口中访问它。 2. 在子窗口中创建一个构造函数,该构造函数需要父窗口作为参数,以便在子窗口中访问父窗口的组件。 3. 在子窗口构造函数中,使用父窗口对象和文本框的名称或ID,访问父窗口的文本框并获取其内容。 以下是一个示例代码,演示如何在点击按钮时打开一个窗口,并获取父窗口中文本框的内容: ``` import javax.swing.*; import java.awt.event.*; public class MyWindow extends JFrame { private JTextField textField; public MyWindow() { // 设置窗口标题 setTitle("新窗口"); // 设置窗口大小 setSize(400, 300); // 设置窗口关闭时的操作 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 添加文本框 textField = new JTextField(); add(textField); // 添加按钮用于获取文本框内容并关闭窗口 JButton button = new JButton("获取文本框内容并关闭窗口"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 获取父窗口的文本框内容 String text = textField.getText(); // 输出文本框内容 System.out.println(text); // 关闭子窗口 dispose(); } }); add(button); } public static void main(String[] args) { // 创建一个按钮用于打开新窗口 JButton button = new JButton("打开新窗口"); // 添加按钮点击事件的监听器 button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 创建新窗口对象,并传入父窗口作为参数 MyWindow window = new MyWindow(); window.setVisible(true); } }); // 创建主窗口并添加按钮 JFrame frame = new JFrame("主窗口"); frame.getContentPane().add(button); frame.pack(); frame.setVisible(true); } } ``` 在此示例中,我们在`MyWindow`类中添加了一个`JTextField`对象,并在`main`方法中创建了一个按钮,用于打开新窗口。在子窗口构造函数中,我们使用父窗口对象和文本框名称来访问父窗口的文本框并获取其内容。在点击按钮时,我们输出文本框内容,并关闭子窗口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值