• 4606阅读
  • 0回复

[讨论]我想做QT ui编辑界面的控件列表类似的效果遇到如下问题 [复制链接]

上一主题 下一主题
离线xiangtian134
 

只看楼主 倒序阅读 楼主  发表于: 2015-02-27
用toolbox时  效果图如图问题1,我想让toolbox每一个tab的height 根据内容设置,填充空白,问题2,我想在同时间打开多个tab,默认只打开一个。
用treewidget时 效果如问题,如何让item A 的子item 在控件最左边 前面的空白填充!!!
目的是为了类似UI界面 控件列表的效果
代码如下 toolbox:

    QToolBox * qtb = new QToolBox(groupBox1);
    //    qtb->setStyleSheet("QToolBoxButton { min-height:20px; }");

    //第一个抽屉
    QGroupBox * gb1 = new QGroupBox(qtb);
    QIcon icon1("1.png");

    //QVBoxLayout *layout = new QVBoxLayout(gb1);

    QListWidget * qlw = new QListWidget(gb1);
    qlw->addItem(new QListWidgetItem(QIcon(QObject::tr("4.png")), QObject::tr("view1")));
    qlw->addItem(new QListWidgetItem(QIcon(QObject::tr("4.png")), QObject::tr("view2")));
    int lw_height = (qlw->height() - 9 ) * qlw->count();
    qlw->setGeometry(0,0,100,lw_height);

    //layout->addWidget(qlw);

    //qlw->setStyleSheet("background-color:blue;");

    //第二个抽屉
    QGroupBox * gb2 = new QGroupBox(qtb);
    QIcon icon2("2.png");


    //第三个抽屉
    QGroupBox * gb3 = new QGroupBox(qtb);
    QIcon icon3("3.png");
    //添加抽屉

    qtb->addItem((QWidget*)gb1,tr("views"));
    qtb->addItem((QWidget*)gb2,tr("buttons"));
    qtb->addItem((QWidget*)gb3,tr("lists"));
    qtb->setItemIcon(0,icon1);
    qtb->setItemIcon(1,icon2);
    qtb->setItemIcon(2,icon3);
    qtb->layout()->setSpacing(0);

    //qtb->widget(0)->setStyleSheet("QToolBox::item{height:25px}");
    //qtb->setGeometry(0,0,100,lw_height+75);
    qtb->setGeometry(0,0,100,300);
    //qtb->setLineWidth(200);
-------------------------------------------------------------------------------------------
treewidget:

    QTreeWidget* treeWidget = new QTreeWidget(groupBox1);
    treeWidget->setColumnCount(1);
    QStringList headers;
    headers << QObject::tr("列表");
    treeWidget->setHeaderLabels(headers);

    QStringList A;
    A << QObject::tr("A");
    QTreeWidgetItem *Aroot = new QTreeWidgetItem(treeWidget, A);

    QStringList zhangsanChinese;
    zhangsanChinese << QObject::tr("标签页");
    QTreeWidgetItem *leaf1 = new QTreeWidgetItem(Aroot, zhangsanChinese);
    leaf1->setIcon(0, QIcon("2.png"));
    Aroot->addChild(leaf1);

    QStringList zhangsanMath;
    zhangsanMath << QObject::tr("标签名");
    QTreeWidgetItem *leaf2 = new QTreeWidgetItem(Aroot, zhangsanMath);
    leaf2->setIcon(0, QIcon("1.png"));
    Aroot->addChild(leaf2);

    QStringList B;
    B << QObject::tr("B");
    QTreeWidgetItem *Broot = new QTreeWidgetItem(treeWidget, B);
    QStringList C;
    C << QObject::tr("C");
    QTreeWidgetItem *Croot = new QTreeWidgetItem(treeWidget, C);
    //QTreeWidgetItem* A = new QTreeWidgetItem(treeWidget,QStringList()<<"A");
    //A->setIcon(0, QIcon("1.png"));
    //A->setCheckState(0, Qt::Checked);
    //    QTreeWidgetItem* B = new QTreeWidgetItem(treeWidget,QStringList()<<"B");
    //    B->setIcon(0, QIcon("2.png"));
    //    B->setCheckState(0, Qt::Checked);
    //    QTreeWidgetItem* C = new QTreeWidgetItem(treeWidget,QStringList()<<"C");
    //    C->setIcon(0, QIcon("3.png"));
    //    C->setCheckState(0, Qt::Checked);

    treeWidget->addTopLevelItem(Aroot);
    treeWidget->addTopLevelItem(Broot);
    treeWidget->addTopLevelItem(Croot);
    //treeWidget->setStyleSheet("QTreeWidget::item{height:25px}");
    treeWidget->setGeometry(0,0,200,400);

    QHBoxLayout *mainlayout = new QHBoxLayout;
    mainlayout->addWidget(treeWidget);
快速回复
限100 字节
 
上一个 下一个