List对数据的存取

姓名查询应用

//往表里存姓名,然后可以查找。这里用的list,存进去,然后找。
//linkedlist的效率比arraylist效率要高

package ch22;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Exec22_09 extends JFrame {
    
public Exec22_09() {
        
final List list = new LinkedList();
        JButton soLabel 
= new JButton("查询结果");
        JLabel name 
= new JLabel("姓名列表");
        
final JTextField result = new JTextField(15);
        
final JTextField inputFd = new JTextField(15);
        
final JTextField soFd = new JTextField(15);
        JButton addBt 
= new JButton("增加名字");
        JButton soBt 
= new JButton("搜索名字");
        
final JTextArea outputArea = new JTextArea(1023);
        Container c 
= getContentPane();
        c.setLayout(
new FlowLayout());
        c.add(inputFd);
        c.add(addBt);
        c.add(soFd);
        c.add(soBt);
        c.add(result);
        result.setEditable(
false);
        c.add(soLabel);
        soLabel.setEnabled(
false);
        c.add(outputArea);
        outputArea.setEditable(
false);
        c.add(name);
        setSize(
300360);
        setLocation(
350,100);
        
//把人添加进去
        addBt.addActionListener(new ActionListener() {
            
public void actionPerformed(ActionEvent e) {
                String addName 
= inputFd.getText();
                
if (!addName.equals("")) {
                    
if (list.contains(addName)) {
                        JOptionPane.showMessageDialog(
null"此人已存在!");
                        
return;
                    }
 else
                        list.add(addName);
                }

                
if (addName.equals("")) {
                    JOptionPane.showMessageDialog(
null"Sorry,您输入为空!");
                    
return;
                }

                outputArea.append(addName 
+ " ");
            }

        }
);
        
//搜索姓名
        soBt.addActionListener(new ActionListener() {
            
public void actionPerformed(ActionEvent e) {
                String so 
= soFd.getText();
                
if (list.contains(so))
                    result.setText(
"恭喜,已经找到!");
                
else
                    result.setText(
"Sorry,查无此人!");
                
if (so.equals(""))
                    result.setText(
"哦喔~,您输入为空!");
            }

        }
);

    }


    
public static void main(String[] args) {
        Exec22_09 fegor 
= new Exec22_09();
        fegor.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        fegor.setVisible(
true);
    }

}

 
在Qt中,`QListWidget` 是一个用于显示列表项的便捷控件。它提供了存储和获取数据的功能,通过 `QListWidgetItem` 可以实现对每个条目的管理。 ### 存储数据 要向 `QListWidget` 添加数据,首先需要创建一个新的 `QListWidgetItem` 实例,并设置其文本内容和其他属性。可以通过 `setData()` 方法将额外的数据与该项关联起来。例如,可以使用 `Qt::UserRole` 或者更高的角色来存储自定义数据: ```cpp QListWidget* list_widget = new QListWidget; // 创建一个新的列表项 QListWidgetItem *item = new QListWidgetItem; item->setText("name"); // 使用 setData() 存储数据 item->setData(Qt::UserRole, QString("ddd")); item->setData(Qt::UserRole + 1, QString("xxx")); // 将项添加到 QListWidget 中 list_widget->addItem(item); ``` 除了基本的字符串数据外,还可以为项设置其他属性,比如对齐方式、选中状态等: ```cpp item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); // 设置文本对齐方式 item->setCheckState(Qt::Unchecked); // 设置未选中状态 ``` ### 获取数据 当用户与 `QListWidget` 交互时,比如点击某个项,可以通过信号槽机制捕获事件并处理数据。通常情况下,会连接 `itemClicked` 信号到一个自定义的槽函数,在那里获取当前选中的项及其相关数据: ```cpp // 连接信号和槽 connect(list_widget, &QListWidget::itemClicked, this, &MyClass::SlotClickedQListWidget); // 槽函数实现 void SlotClickedQListWidget() { // 获取当前选中项的数据 QString clicked_path = list_widget->currentItem()->data(Qt::UserRole).toString(); } ``` 如果需要保存整个 `QListWidget` 的内容或状态,可以遍历所有项并将它们的信息序列化到文件或其他持久化存储中。同样地,从这些存储中读取信息后重建 `QListWidget` 的内容也是可行的。 此外,对于更复杂的数据结构或者需要更多定制化的操作,可能要考虑使用模型-视图架构(如 `QListView` 和 `QStandardItemModel`)以获得更大的灵活性[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值