Esempio n. 1
0
PreferenceDialog::PreferenceDialog(QWidget *parent)
    : QDialog(parent)
{
    // 创建右边的四个页面
    createAppearancePage();
    createWebBrowserPage();
    createMailAndNewsPage();
    createAdvancedPage();

    // 创建下面的 button box
    buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                     | QDialogButtonBox::Cancel);

    // 创建左边的导航的list
    listWidget = new QListWidget;
    listWidget->setIconSize(QSize(20, 20));
    // 相对路径从运行程序的当前路径算起
//    QListWidgetItem *item = new QListWidgetItem(QIcon("../preferences/Resources/start1.png"), tr("Appearance"));
    QListWidgetItem *item = new QListWidgetItem(QIcon("../LearnOptionDialog/Resources/stop.png"), tr("Appearance"));
    item->setSizeHint(QSize(-1, 30));
//    item->setIC();
    listWidget->addItem(item);

//    listWidget->addItem(tr("Appearance"));
    listWidget->addItem(tr("Web Browser"));
    listWidget->addItem(tr("Mail & News"));
    listWidget->addItem(tr("Advanced"));

    // 把4个页面放入 QStackedLayout
    stackedLayout = new QStackedLayout;
    stackedLayout->addWidget(appearancePage);
    stackedLayout->addWidget(webBrowserPage);
    stackedLayout->addWidget(mailAndNewsPage);
    stackedLayout->addWidget(advancedPage);
    connect(listWidget, SIGNAL(currentRowChanged(int)),
            stackedLayout, SLOT(setCurrentIndex(int)));

    // 布局
    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->setColumnStretch(0, 1);
    mainLayout->setColumnStretch(1, 3);
    mainLayout->addWidget(listWidget, 0, 0);
    mainLayout->addLayout(stackedLayout, 0, 1);
    mainLayout->addWidget(buttonBox, 1, 0, 1, 2);
    setLayout(mainLayout);

    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));

    setWindowTitle(tr("Preferences"));
    listWidget->setCurrentRow(0);
}
Esempio n. 2
0
PreferenceDialog::PreferenceDialog(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::PreferenceDialog)
{
    ui->setupUi(this);

    createAppearancePage();
    createWebBrowserPage();
    createMailAndNewsPage();
    createAdvancedPage();

    buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                     | QDialogButtonBox::Cancel);

    //列表框
    listWidget = new QListWidget;
    listWidget->addItem(tr("Appearance"));
    listWidget->addItem(tr("Web Browser"));
    listWidget->addItem(tr("Mail & News"));
    listWidget->addItem(tr("Advanced"));

    //分页--通过设置当前的页号,来调用appearancePage/webBrowserPage/mailAndNewsPage/advancedPage
    stackedLayout = new QStackedLayout;
    stackedLayout->addWidget(appearancePage);
    stackedLayout->addWidget(webBrowserPage);
    stackedLayout->addWidget(mailAndNewsPage);
    stackedLayout->addWidget(advancedPage);
    //页号的改变,引发页面的转换
    connect(listWidget, SIGNAL(currentRowChanged(int)),
            stackedLayout, SLOT(setCurrentIndex(int)));

    //Grid的页面布局---这里通常用设计师比较好,而非手写
    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->setColumnStretch(0, 1);
    mainLayout->setColumnStretch(1, 3);
    mainLayout->addWidget(listWidget, 0, 0);
    mainLayout->addLayout(stackedLayout, 0, 1);
    mainLayout->addWidget(buttonBox, 1, 0, 1, 2);
    setLayout(mainLayout);

    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));

    setWindowTitle(tr("Preferences"));
    listWidget->setCurrentRow(0);
}
Esempio n. 3
0
StackedLayout::StackedLayout(QWidget *parent) : QDialog(parent) {
  createAppearancePge();
  createWebBrowserPage();
  createMailAndNewsPage();
  createAdvancedPage();

  okPushButton = new QPushButton(tr("确定"));
  cancelPushButton = new QPushButton(tr("取消"));
  /*! clicked信号的相连 */
  connect(okPushButton, &QPushButton::clicked, this, &StackedLayout::accept);
  connect(cancelPushButton, &QPushButton::clicked, this, &StackedLayout::reject);
  QHBoxLayout *buttonsHBoxLayout = new QHBoxLayout;
  /*! 添加一个占据空白的伸缩弹簧 */
  buttonsHBoxLayout->addStretch();
  buttonsHBoxLayout->addWidget(okPushButton);
  buttonsHBoxLayout->addWidget(cancelPushButton);

  /*! QListWidget部件使用addItem进行项的添加 */
  listWidget = new QListWidget;
  listWidget->addItem(tr("外表"));
  listWidget->addItem(tr("浏览器"));
  listWidget->addItem(tr("邮件和新闻"));
  listWidget->addItem(tr("高级"));

  stackedLayout = new QStackedLayout;
  stackedLayout->addWidget(appearancePage);
  stackedLayout->addWidget(webBrowerPage);
  stackedLayout->addWidget(mailAndNewsPage);
  stackedLayout->addWidget(advancedPage);
  /*! 将QListWidget的当前项和QStackedLayout需要展示的页面进行相联系 */
  connect(listWidget, &QListWidget::currentRowChanged, stackedLayout, &QStackedLayout::setCurrentIndex);

  QGridLayout *mainLayout = new QGridLayout;
  /*! 设置第一列的伸缩强度宽1,设置第二列的伸缩强度宽为3. 实际的效果是两列的跨度为1:3 */
  mainLayout->setColumnStretch(0, 1);
  mainLayout->setColumnStretch(1, 3);
  mainLayout->addWidget(listWidget, 0, 0);
  mainLayout->addLayout(stackedLayout, 0, 1);
  mainLayout->addLayout(buttonsHBoxLayout, 1, 0, 1, 2);
  this->setLayout(mainLayout);
 
  this->resize(800, 600);
  this->setWindowTitle(tr("堆叠布局"));
  /*! 将第一个页面作为缺省的页面 */
  listWidget->setCurrentRow(0);
}
PreferenceDialog::PreferenceDialog(QWidget *parent)
    : QDialog(parent)
{
    createAppearancePage();
    createWebBrowserPage();
    createMailAndNewsPage();
    createAdvancedPage();

    okButton = new QPushButton(tr("OK"));
    cancelButton = new QPushButton(tr("Cancel"));
    okButton->setDefault(true);

    listWidget = new QListWidget;
    listWidget->addItem(tr("Appearance"));
    listWidget->addItem(tr("Web Browser"));
    listWidget->addItem(tr("Mail & News"));
    listWidget->addItem(tr("Advanced"));

    stackedLayout = new QStackedLayout;
    stackedLayout->addWidget(appearancePage);
    stackedLayout->addWidget(webBrowserPage);
    stackedLayout->addWidget(mailAndNewsPage);
    stackedLayout->addWidget(advancedPage);
    connect(listWidget, SIGNAL(currentRowChanged(int)),
            stackedLayout, SLOT(setCurrentIndex(int)));

    QHBoxLayout *buttonLayout = new QHBoxLayout;
    buttonLayout->addStretch();
    buttonLayout->addWidget(okButton);
    buttonLayout->addWidget(cancelButton);

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->setColumnStretch(0, 1);
    mainLayout->setColumnStretch(1, 3);
    mainLayout->addWidget(listWidget, 0, 0);
    mainLayout->addLayout(stackedLayout, 0, 1);
    mainLayout->addLayout(buttonLayout, 1, 0, 1, 2);
    setLayout(mainLayout);

    connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));

    setWindowTitle(tr("Preferences"));
    listWidget->setCurrentRow(0);
}
PreferenceDialog::PreferenceDialog(QWidget *parent)
    : QDialog(parent)
{
    createAppearancePage();
    createWebBrowserPage();
    createMailAndNewsPage();
    createAdvancedPage();

    buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                     | QDialogButtonBox::Cancel);

    listWidget = new QListWidget;
    listWidget->addItem(tr("Appearance"));
    listWidget->addItem(tr("Web Browser"));
    listWidget->addItem(tr("Mail & News"));
    listWidget->addItem(tr("Advanced"));

    stackedLayout = new QStackedLayout;
    stackedLayout->addWidget(appearancePage);
    stackedLayout->addWidget(webBrowserPage);
    stackedLayout->addWidget(mailAndNewsPage);
    stackedLayout->addWidget(advancedPage);
    connect(listWidget, SIGNAL(currentRowChanged(int)),
            stackedLayout, SLOT(setCurrentIndex(int)));

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->setColumnStretch(0, 1);
    mainLayout->setColumnStretch(1, 3);
    mainLayout->addWidget(listWidget, 0, 0);
    mainLayout->addLayout(stackedLayout, 0, 1);
    mainLayout->addWidget(buttonBox, 1, 0, 1, 2);
    setLayout(mainLayout);

    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));

    setWindowTitle(tr("Preferences"));
    listWidget->setCurrentRow(0);
}