如图,在QTDesigner中需创建如图所示的对话框,当点击More按钮时会显示下面两个对话框,此界面设计过程中经常会遇到以下问题,
1、#include "ui_sortdialog.h"头文件不能包含进去,此时,问题定出现在头文件中,需在设计过程中严格按照步骤设计界面,否则就会出现头文件不能包含进去的问题。
2、
primaryColumnCombo->clear();
secondaryColumnCombo->clear();
tertiaryColumnCombo->clear();
此段代码中primaryColumnCombo-tertiaryColumnCombo不能点亮,问题原因在于界面设计过程中ObjectName及Text属性编辑不正确。
附上代码:
1)sortdialog.h
#ifndef SORTDIALOG_H
#define SORTDIALOG_H
#include <QtGui/QDialog>
#include "ui_sortdialog.h"
class sortdialog : public QDialog, public Ui::SortDialog
{
Q_OBJECT
public:
sortdialog(QWidget *parent = 0);
//Qt::WFlags flags = 0);
//~sortdialog();
void setColumnRange(QChar first, QChar last);
//private:
};
#endif // SORTDIALOG_H
2)sortdialog.cpp
#include "sortdialog.h"
#include <QtGui>
sortdialog::sortdialog(QWidget *parent)
//Qt::WFlags flags)
: QDialog(parent)
{
setupUi(this);
secondaryGroupBox->hide();
tertiaryGroupBox->hide();
layout()->setSizeConstraint(QLayout::SetFixedSize);
setColumnRange('A','Z');
}
//sortdialog::~sortdialog()
void sortdialog::setColumnRange(QChar first, QChar last)
{
primaryColumnCombo->clear();
secondaryColumnCombo->clear();
tertiaryColumnCombo->clear();
secondaryColumnCombo->addItem(tr("None"));
tertiaryColumnCombo->addItem(tr("None"));
primaryColumnCombo->setMinimumSize(secondaryColumnCombo->sizeHint());
QChar ch = first;
while (ch <= last) {
primaryColumnCombo->addItem(QString(ch));
secondaryColumnCombo->addItem(QString(ch));
tertiaryColumnCombo->addItem(QString(ch));
ch = ch.unicode() + 1;
}
}
3)main.cpp
#include "sortdialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
sortdialog w;
w.setColumnRange('C', 'Z');
w.show();
return a.exec();
}
运行结果如图所示: