类似功能:
当然功能不会实现这里的全部,只做一些基本的功能:
1- 列表有输入框,发送按钮,单击按钮可以读取输入框文本发送
2- 读取配置文件生成命令列表
3- 可以吧命令列表信息保存到配置文件
4- 可以增删命令列表
5- 双击按钮可以更改按钮名字
先实现第一个功能:
1- 列表有输入框,发送按钮
单击按钮可以读取输入框文本发送
实现思路,就是参考前面实现下载列表
1- 实现自己的类QWidget,继承QWidget,里面定义一些必要控件
2- 自己的类QWidget的构造函数中要初始化这些控件
//使用水平布局类
horLayout = new QHBoxLayout();
//主要控件
ineEdit = new QLineEdit();
Button = new QPushButton();
//item
item = new QListWidgetItem();
//设置左侧、顶部、右侧和底部边距
horLayout->setContentsMargins(0, 0, 0, 0);
//表示各个控件之间的上下间距
horLayout->setSpacing(5);
//添加控件到布局器
horLayout->addWidget(ineEdit);
horLayout->addWidget(Button);
//QWidget设置布局
setLayout(horLayout);
//设置item
QSize size = item->sizeHint();
item->setSizeHint(QSize(size.width(), 35));
setSizeIncrement(size.width(), 35);
3- 添加按钮事件
4- UI界面中添加一个listWidget
5- 主函数使用我们的类
全部源码:my_widget.h
#ifndef MY_WIDGET_H
#define MY_WIDGET_H
#include <QWidget>
#include <QHBoxLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QSize>
#include <QListWidgetItem>
class my_widget : public QWidget
{
Q_OBJECT
public:
explicit my_widget(QWidget *parent = nullptr);
~my_widget();
//使用水平布局类
QHBoxLayout *horLayout;
//主要控件
QLineEdit *ineEdit;
QPushButton *Button ;
//添加到widget需要用item
QListWidgetItem *item;
signals:
public slots:
void on_pbutton_clicked();
};
#endif // MY_WIDGET_H
全部源码:my_widget.cpp
#include "my_widget.h"
#include <QDebug>
my_widget::my_widget(QWidget *parent) : QWidget(parent)
{
//使用水平布局类
horLayout = new QHBoxLayout();
//主要控件
ineEdit = new QLineEdit();
Button = new QPushButton();
//item
item = new QListWidgetItem();
//设置左侧、顶部、右侧和底部边距
horLayout->setContentsMargins(0, 0, 0, 0);
//表示各个控件之间的上下间距
horLayout->setSpacing(5);
//添加控件到布局器
horLayout->addWidget(ineEdit);
horLayout->addWidget(Button);
//QWidget设置布局
setLayout(horLayout);
//设置item
QSize size = item->sizeHint();
item->setSizeHint(QSize(size.width(), 35));
setSizeIncrement(size.width(), 35);
//连接按钮事件
QObject::connect(Button ,SIGNAL(clicked()),this,SLOT(on_pbutton_clicked()));
}
my_widget::~my_widget()
{
delete item;
delete Button;
delete ineEdit;
delete horLayout;
}
void my_widget::on_pbutton_clicked(){
qDebug() << "on_pbutton_clicked is : " +ineEdit->text();
}
全部源码:MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QLineEdit"
#include "QListView"
#include "QVBoxLayout"
#include "QHBoxLayout"
#include "QLabel"
#include "QProgressBar"
#include "QPushButton"
#include "QIcon"
#include "QFont"
#include "QListWidgetItem"
#include "QSize"
#include "QString"
#include "my_widget.h"
/*
* 实现一个列表,里面有 lineEdit button
*
*
*
*
*/
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
int i=0;
while(i++<10)
{
//创建widget
my_widget *mwidget =new my_widget(this);
//设置文本和按钮的文本
mwidget->Button->setText(QString::number(i));
mwidget->ineEdit->setText(QString::number(i));
//把item添加到listWidget
ui->listWidget->addItem(mwidget->item);
//将item与widget联系
ui->listWidget->setItemWidget(mwidget->item, mwidget);
}
}
MainWindow::~MainWindow()
{
delete ui;
}