QDialog上的QTabWidget有关问题
QDialog下的QTabWidget问题
我在一个QDialog下添加了一个tabWidget,在其下添加了一positionTab,给这个positionTab设置了layout,但是运行后发现positionTab下什么东西都没有。。。
研究了快3个小时了看不明白到底哪里错了。奇怪的地方在于,下面的代码会让tabWidget的另外一个tab(ambientTab)下显示“This is a low”!
有高人解释一下我到底哪里错了吗???还是QDialog下的QTabWidget有问题?
------解决方案--------------------
addRow有问题。
和UI相关的设计,最好使用Qt Designer,不易出错。
下面是我用它生成的代码,你比较一下:
/********************************************************************************
** Form generated from reading UI file 'designerGg6260.ui'
**
** Created: Wed Jul 4 21:55:40 2012
** by: Qt User Interface Compiler version 4.8.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef DESIGNERGG6260_H
#define DESIGNERGG6260_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QFormLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QTabWidget>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_Dialog
{
public:
QVBoxLayout *verticalLayout;
QTabWidget *tabWidget;
QWidget *tab;
QWidget *formLayoutWidget;
QFormLayout *formLayout;
QLabel *xLabel;
QLineEdit *xLineEdit;
QLabel *yLabel;
QLineEdit *yLineEdit;
QLabel *zLabel;
QLineEdit *zLineEdit;
void setupUi(QDialog *Dialog)
{
if (Dialog->objectName().isEmpty())
Dialog->setObjectName(QString::fromUtf8("Dialog"));
Dialog->resize(400, 300);
verticalLayout = new QVBoxLayout(Dialog);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
tabWidget = new QTabWidget(Dialog);
tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
tab = new QWidget();
tab->setObjectName(QString::fromUtf8("tab"));
formLayoutWidget = new QWidget(tab);
formLayoutWidget->setObjectName(QString::fromUtf8("formLayoutWidget"));
formLayoutWidget->setGeometry(QRect(70, 30, 160, 80));
formLayout = new QFormLayout(formLayoutWidget);
formLayout->setObjectName(QString::fromUtf8("formLayout"));
formLayout->setContentsMargins(0, 0, 0, 0);
xLabel = new QLabel(formLayoutWidget);
xLabel->setObjectName(QString::fromUtf8("xLabel"));
formLayout->setWidget(0, QFormLayout::LabelRole, xLabel);
xLineEdit = new QLineEdit(formLayoutWidget);
xLineEdit->setObjectName(QString::fromUtf8("xLineEdit"));
formLayout->setWidget(0, QFormLayout::FieldRole, xLineEdit);
我在一个QDialog下添加了一个tabWidget,在其下添加了一positionTab,给这个positionTab设置了layout,但是运行后发现positionTab下什么东西都没有。。。
- C/C++ code
QTabWidget *tabWidget = new QTabWidget; QWidget *positionTab = new QWidget(); QFormLayout *lightPositionLayout = new QFormLayout(); lightPositionLayout->addRow("X:",xpos); lightPositionLayout->addRow("Y:",ypos); lightPositionLayout->addRow("Z:",zpos); positionTab->setLayout(lightPositionLayout); tabWidget->addTab(positionTab,"Position");
研究了快3个小时了看不明白到底哪里错了。奇怪的地方在于,下面的代码会让tabWidget的另外一个tab(ambientTab)下显示“This is a low”!
- C/C++ code
QLabel *ambientTab = new QLabel(tr("This is a low")); tabWidget->addTab(ambientTab,tr("Ambient"));
有高人解释一下我到底哪里错了吗???还是QDialog下的QTabWidget有问题?
------解决方案--------------------
addRow有问题。
和UI相关的设计,最好使用Qt Designer,不易出错。
下面是我用它生成的代码,你比较一下:
/********************************************************************************
** Form generated from reading UI file 'designerGg6260.ui'
**
** Created: Wed Jul 4 21:55:40 2012
** by: Qt User Interface Compiler version 4.8.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef DESIGNERGG6260_H
#define DESIGNERGG6260_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QFormLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QTabWidget>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_Dialog
{
public:
QVBoxLayout *verticalLayout;
QTabWidget *tabWidget;
QWidget *tab;
QWidget *formLayoutWidget;
QFormLayout *formLayout;
QLabel *xLabel;
QLineEdit *xLineEdit;
QLabel *yLabel;
QLineEdit *yLineEdit;
QLabel *zLabel;
QLineEdit *zLineEdit;
void setupUi(QDialog *Dialog)
{
if (Dialog->objectName().isEmpty())
Dialog->setObjectName(QString::fromUtf8("Dialog"));
Dialog->resize(400, 300);
verticalLayout = new QVBoxLayout(Dialog);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
tabWidget = new QTabWidget(Dialog);
tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
tab = new QWidget();
tab->setObjectName(QString::fromUtf8("tab"));
formLayoutWidget = new QWidget(tab);
formLayoutWidget->setObjectName(QString::fromUtf8("formLayoutWidget"));
formLayoutWidget->setGeometry(QRect(70, 30, 160, 80));
formLayout = new QFormLayout(formLayoutWidget);
formLayout->setObjectName(QString::fromUtf8("formLayout"));
formLayout->setContentsMargins(0, 0, 0, 0);
xLabel = new QLabel(formLayoutWidget);
xLabel->setObjectName(QString::fromUtf8("xLabel"));
formLayout->setWidget(0, QFormLayout::LabelRole, xLabel);
xLineEdit = new QLineEdit(formLayoutWidget);
xLineEdit->setObjectName(QString::fromUtf8("xLineEdit"));
formLayout->setWidget(0, QFormLayout::FieldRole, xLineEdit);