QlistWidget自定义Item总结

  1. 采用自定义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信号与槽的机制来实现信息传递。
  2. 建立一个自定义类,然后添加到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一直添加在第一行,覆盖显示。
  3. 可以定义一个自定义控件类的对象,用于整个程序其他地方函数的调用,因为你的添加函数中的new对象无法在其他的函数中调用,建立好之后使用=就可以传递对象bluelist_widget2=bluelist_widget;

你可能感兴趣的:(QT,on,Android问题解决方案)