查看完整版本: [-- 在QTabWidget中添加QlistWidget到tab,为什么第一个tab的listWidget排列跟其他的刚好相反 --]

QTCN开发网 -> Qt基础编程 -> 在QTabWidget中添加QlistWidget到tab,为什么第一个tab的listWidget排列跟其他的刚好相反 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

iamli01 2017-07-18 10:16

在QTabWidget中添加QlistWidget到tab,为什么第一个tab的listWidget排列跟其他的刚好相反

求助!!我在QTabWidget中添加QlistWidget到tab,为什么第一个tab的listWidget排列跟其他的刚好相反。无论我设置横排还是竖排,第一个tab都是相反....

addTab 的代码
  1. //后面需要从数据库中获取房间号roomNo来添加tab
        for (int roomNo = 1; roomNo <= 3; ++roomNo) {
            QListWidget *listWidget = new QListWidget();
            this->addButtonToList(roomNo, listWidget);
            ui->tableTabWidget->addTab(listWidget, QString("餐厅%1").arg(roomNo));
            //QIcon icon1(":/new/icon/images/1.ico");
            //tabWidget->addTab(widget, icon1, "Tab1");
        }


创建listWidget的代码,设置了横排

  1. //往listWidget中添加内容
    void MainWindow::addButtonToList(int roomNo, QListWidget *listWidget)
    {
        //设置图片排列
        listWidget->setViewMode(QListView::IconMode);

        //设置listwidget中的按钮不准拖动
        listWidget->setMovement(QListView::Static);
        //listWidget->setDragEnabled(false);

        //设置ListWidget是否可以自动排序,默认是false
        //listWidget->setSortingEnabled(true);

        //qt给的demo中configdialog的例子中默认是竖向的
        //listWidget->setFlow(QListView::TopToBottom);
        listWidget->setFlow(QListView::LeftToRight);

        //设置item图标大小
        listWidget->setIconSize(QSize(100, 80));
        // 需要根据roomNo从数据库中获取餐桌
        for (int var = 1; var <= 35; var++) {
            listWidget->addItem(new QListWidgetItem(QIcon(":/image/image/table.png"), QString("餐桌%1").arg(var)));
        }
        listWidget->setViewMode(QListView::IconMode);
        //设置样式,直接在函数中设置
        listWidget->setStyleSheet("QListWidget{border:1px solid gray; color:black; }"
                                  "QListWidget::Item{padding-top:20px; padding-bottom:4px; }"
                                  "QListWidget::Item:hover{background:skyblue; }"
                                  "QListWidget::item:selected{background:lightblue; color:red; }"
                                  "QListWidget::item:selected:!active{border-width:0px; background:lightgreen; }"
                                  );

        // 双击信号
        //connect(listWidget,SIGNAL(itemDoubleClicked(QListWidgetItem *p)),this,SLOT());
    }



运行结果:
第一个tab中的listWidget排列方式竖排,使用  listWidget->setFlow(QListView::LeftToRight); 设置了横排
[attachment=17489]
第二个和第三个tab我设置的横排,结果也是横排
[attachment=17491]

求大神解惑

iamli01 2017-07-19 08:59
没人搭理自己先回复个记录下,昨晚上测出来我setCurrentIndex 哪个tab,就会跟别的tab的排列相反,而且不会自动换行之类的....


查看完整版本: [-- 在QTabWidget中添加QlistWidget到tab,为什么第一个tab的listWidget排列跟其他的刚好相反 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled