Q List Widget (一) 初次使用
常用属性
Demo 演示
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 动态添加项
ui->listWidget->addItem("张三");
ui->listWidget->addItem("李四");
ui->listWidget->addItem("王五");
// 移除项
ui->listWidget->takeItem(0);
// 插入项,从项前面插入
ui->listWidget->insertItem(0, "张三");
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_listWidget_currentRowChanged(int currentRow)
{
// qDebug() << currentRow << endl;
qDebug() << "下标是" << currentRow << "项内容:" <<
ui->listWidget->item(currentRow)->text() << endl;
}
QListWidget(二)仿 QQ 好友列表制作
该界面用到的样式表
QLabel{background-color:darkgray}
QLabel{color:darkgray;font-size:20px}
QPushButton{border-image:url(:/image/01_status_run.png)}
QLineEdit{background:transparent;border:none}
QListWidget::item{height:65px}
QListWidget::item::selected{background-color:rgb(200,200,200)}
QListWidget::item::hover{background-color:rgb(220,220,220)}
qqitem.h
#ifndef QQITEM_H
#define QQITEM_H
#include <QWidget>
namespace Ui {
class QQitem;
}
class QQitem : public QWidget {
Q_OBJECT
public:
explicit QQitem(QString icon,
bool flag,
QString name,
QWidget *parent = nullptr);
~QQitem();
private:
Ui::QQitem *ui;
};
#endif // QQITEM_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
qqitem.cpp
#include "qqitem.h"
#include "ui_qqitem.h"
QQitem::QQitem(QString icon, bool flag, QString name, QWidget *parent) :
QWidget(parent),
ui(new Ui::QQitem)
{
ui->setupUi(this);
QImage image(icon);
ui->icon->setPixmap(QPixmap::fromImage(image.scaled(ui->icon->width(),
ui->icon->height()))); //
// 跟随控件大小,显示图片,添加路径
QImage image2(":/image/01_status_run.png");
ui->phone->setPixmap(QPixmap::fromImage(image2.scaled(ui->phone->width(),
ui->phone->height()))); //
// 添加路径,跟随控件大小,显示图片
ui->phone->setVisible(flag); //
// 控制是否显示手机图标
ui->name->setText(name);
}
QQitem::~QQitem()
{
delete ui;
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include "qqitem.h"
#include "QListWidgetItem"
class QQitem;
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setLayout(ui->verticalLayout);
QQitem *qqitem = new QQitem(":/image/01_pushButton_start.png", true, "疯子兰特");
QQitem *qqitem1 = new QQitem(":/image/01_status_alarm.png", true, "疯子兰特1");
QQitem *qqitem2 = new QQitem(":/image/01_status_nor.png", true, "疯子兰特2");
QQitem *qqitem3 = new QQitem(":/image/01_status_run.png", true, "疯子兰特3");
QQitem *qqitem4 = new QQitem(":/image/02_enquiry.png", true, "疯子兰特4");
QListWidgetItem *item0 = new QListWidgetItem;
QListWidgetItem *item1 = new QListWidgetItem;
QListWidgetItem *item2 = new QListWidgetItem;
QListWidgetItem *item3 = new QListWidgetItem;
QListWidgetItem *item4 = new QListWidgetItem;
ui->listWidget->addItem(item0);
ui->listWidget->addItem(item1);
ui->listWidget->addItem(item2);
ui->listWidget->addItem(item3);
ui->listWidget->addItem(item4);
ui->listWidget->setItemWidget(item0, qqitem);
ui->listWidget->setItemWidget(item1, qqitem1);
ui->listWidget->setItemWidget(item2, qqitem2);
ui->listWidget->setItemWidget(item3, qqitem3);
ui->listWidget->setItemWidget(item4, qqitem4);
}
Widget::~Widget()
{
delete ui;
}
最终效果