- 采用自定义qwidget编写
itemQWidget *widget = new QWidget(ui->listWidget); //创建自定义的
widget->setStyleSheet(“background-color:transparent;”);//背景设置为透明
QWidget *frontArea = new QWidget(widget);
frontArea->setFixedHeight(32);
QLabel *TextLabel = new QLabel(frontArea);
TextLabel->setText(“wangzi”);
QLabel *TotalCopyLabel = new QLabel(frontArea);
TotalCopyLabel->setText(“0”);
QLabel *TextLabel1 = new QLabel(widget);
TextLabel1->setText(“123456”);
QPushButton *OpenFolderButton = new QPushButton(widget);
// OpenFolderButton->setToolTip(QStringLiteral(“断开连接”));
OpenFolderButton->setText(“断开连接”);
OpenFolderButton->setFixedSize(200, 50);
OpenFolderButton->hide();
QVBoxLayout *verLayout = new QVBoxLayout;verLayout->setContentsMargins(0, 0, 0, 0);
verLayout->setMargin(0);
verLayout->setSpacing(0);
verLayout->addWidget(TextLabel);
verLayout->addWidget(TotalCopyLabel);
frontArea->setLayout(verLayout);
QHBoxLayout *horLayout = new QHBoxLayout;horLayout->setContentsMargins(0, 0, 0, 0);
horLayout->setMargin(0);
horLayout->setSpacing(0);
horLayout->addWidget(frontArea);
horLayout->addWidget(TextLabel1);
horLayout->addWidget(OpenFolderButton);
widget->setLayout(horLayout);
QListWidgetItem *item = new QListWidgetItem();
QSize size = item->sizeHint();
item->setSizeHint(QSize(size.width(), 56));
item->setTextColor(QColor(Qt::green));
ui->listWidget->addItem(item);
widget->setSizeIncrement(size.width(), 56);
ui->listWidget->setItemWidget(item, widget);
需要相关关联可以建立connect信号与槽的机制来实现信息传递。 - 建立一个自定义类,然后添加到listWidget中程序如下:
widget=new widget(ui->listWidget);
QSize size = item->sizeHint();
item->setSizeHint(QSize(size.width(), 140));
item->setTextColor(QColor(Qt::green));
ui->listWidget->addItem(item);
widget11->setSizeIncrement(size.width(), 140);
ui->listWidget->setItemWidget(item, widget11);
新建widget类继承与QWidget,在widget中设计相关函数,进行数据的传递,显示,以及相关按钮变量的显示,按钮点击触发等等。程序如下:
void bluelist::play()
{ ui->label_2->setText(" “);
ui->pushButton->hide();}
void bluelist::bluetext(QString style)
{
ui->label_2->setText(“正在连接…”);
ui->label_2->setStyleSheet(style);
ui->pushButton->hide();}
QString bluelist::getbluetext()
{
QString text=ui->label->text();
return text;}
void bluelist::connectsuccess(QString ne)//连接成功
{
ui->label_4->setText(ne);
ui->label_2->setText(“已连接”);
ui->label_2->setStyleSheet(“color: rgb(0, 255, 127)”);
ui->pushButton->show();
ui->pushButton->setText(“断开连接”);
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(buttonclickSlot()));}
void bluelist::buttonclickSlot()//点击按钮槽用以传递触发信号
{
ui->label_2->setText(” ");
ui->pushButton->hide();
ne1=ui->label_4->text();
emit singnal();//触发信号传递}
QString bluelist::buttonclickbiaozhi()//用于返回该界面的相关字符
{
return ne1;
}
解决了需要在listWidget中修改添加相关控件的问题。有一下个难题
1.每个界面都设置了按钮控件,如何知道是listWidget中那个item对一个的按钮被点击了,在widget中设置一个变量,用于存储当前界面的相关信息,当按钮点击后,将当前信息存到新建立的widget的一个全局变量中,然后主程序中调用这个全局变量就知道当前处在那个界面了,相关操作就可以继续进行了。
2.要在listWidget中添加item,新建类的 bluelist_widget = new widget(this);函数一定要放在添加函数中,每次都需要初始化,要不listWidget会将item一直添加在第一行,覆盖显示。 - 可以定义一个自定义控件类的对象,用于整个程序其他地方函数的调用,因为你的添加函数中的new对象无法在其他的函数中调用,建立好之后使用=就可以传递对象bluelist_widget2=bluelist_widget;
QlistWidget自定义Item总结
最新推荐文章于 2024-02-29 17:03:19 发布