QColorDialog对话框
QColorDialog是选择颜色对话框,选择颜色使用静态函数QColorDialog::getColor()。下面是 “选择颜色”按钮的代码,它为文本框的字体选择颜色。
void Widget::on_btnColor_clicked()
{
//选择颜色
QPalette pal=ui->plainTextEdit->palette(); //获取现有 palette
QColor iniColor=pal.color(QPalette::Text); //现有的文字颜色
QColor color=QColorDialog::getColor (iniColor, this, "选择颜色");
if (color.isValid()){
pal.setColor(QPalette::Text, color);
ui->plainTextEdit->setPalette(pal);
}
}
getColor()函数需要传递一个初始的颜色,这里是将palette提取的文本颜色作为初始颜色。 getColor()函数返回一个颜色变量,若在颜色对话框里取消选择,则返回的颜色值无效,通过 QColor::isValid()函数来判断返回是否有效。
QFontDialog对话框
QFontDialog是选择字体对话框,选择字体使用静态函数QFontDialog::getFont()。下面是“选择字体”按钮的代码,它为文本框选择字体,字体设置的内容包括字体名称、大小、粗体、斜体等。
void Widget::on_btnFont_clicked()
{
//选择字体
QFont iniFont=ui->plainTextEdit->font();
bool ok=false;
QFont font=QFontDialog::getFont (&ok, iniFont, this, "选择字体");
if(ok)
ui->plainTextEdit->setFont (font);
}
getFont()返回一个字体变量,但是QFont没有类似于isValid()的函数来判断有效性,所以在调用getFont()函数时以引用方式传递一个逻辑变量ok,调用后通过判断ok是否为true来判断字体选择是否有效。
QlnputDialog标准输入对话框
QlnputDialog有单行字符串输入、整数输入、浮点数输入、列表框选择输入和多行文本等多 种输入方式,下图是其中4种界面效果。
1.输入文字
QInputDialog::getText()函数显示一个对话框用于输入字符串,传递的参数包括对话框标题、 提示标签文字、缺省输入、编辑框响应模式等。
其中编辑框响应模式是枚举类型QLineEdit::EchoMode,它控制编辑框上文字的显示方式,正常情况下选择QLineEdit::Normal;如果是输入密码,选择QLineEdit::Password。代码如下:
void Widget::on_btnInpStr_clicked()
{
//输入字符串
QString dlgTitle="输入文字对话框";
QString txtLabel="请输入文件名";
QString defaultInput="新建文件.txt";
QLineEdit::EchoMode echoMode=QLineEdit::Normal;
// QLineEdit::EchoMode echoMode=QLineEdit::Password; //密码输入
bool ok=false;
QString text = QInputDialog::getText(this, dlgTitle,txtLabel, echoMode,defaultInput, &ok);
if (ok && !text.isEmpty())
ui->plainTextEdit->appendPlainText(text);
}
2. 输入整数
使用QInputDialog::getInt()函数输入一个整数,下面的代码为文本选择字体大小。
void Widget::on_btnInpInt_clicked()
{
//输入整数
QString dlgTitle="输入整数对话框";
QString txtLabel="设置字体大小";
int defaultValue=ui->plainTextEdit->font().pointSize();
int minValue=6, maxValue=50, stepValue=1;
bool ok=false;
int inputValue=QInputDialog::getInt(this, dlgTitle, txtLabel,
defaultValue, minValue, maxValue, stepValue, &ok);
if (ok) {
QFont font=ui->plainTextEdit->font();
font.setPointSize(inputValue);
ui->plainTextEdit->setFont (font);
}
}
输入整数对话框使用一个SpinBox组件输入整数,getlnt()需要传递的参数包括数值大小范围、步长、初始值,确认选择输入后,将输入的整数值作为文本框字体的大小。
3. 输入浮点数
使用QInputDialog::getDouble()函数输入一个浮点数,输入对话框使用一个QDoubleSpinBox 作为输入组件,getDouble()的输入参数需要输入范围、初始值、小数点位数等。代码如下:
void Widget::on_btnInpFloat_clicked()
{
//输入浮点数
QString dlgTitle="输入浮点数对话框";
QString txtLabel="输入一个浮点数";
float defaultValue=3.13;
float minValue=0, maxValue=10000;
int decimals=2; //小数点位数
bool ok=false;
float inputValue = QInputDialog::getDouble (this, dlgTitle, txtLabel, defaultValue, minValue, maxValue, decimals, &ok);
if (ok){
QString str=QString::asprintf ("输入了一个浮点数:%.2f",inputValue);
ui->plainTextEdit->appendPlainText (str);
}
}
4.下拉列表选择输入
使用QInputDialog::getItem()可以从一个ComboBox组件的列表中选择输入。代码如下:
void Widget::on_btnInpItem_clicked()
{
//条目选择输入*
QStringList items;
items <<"优秀"<<"良好"<<"合格"<<"不合格";
QString dlgTitle="条目选择对话框";
QString txtLabel="请选择级别";
int curIndex=0; //初始选择项
bool editable=true; //ComboBox是否可编辑
bool ok=false;
QString text = QInputDialog::getItem(this, dlgTitle, txtLabel, items, curIndex, editable, &ok);
if (ok && !text.isEmpty()){
ui->plainTextEdit->appendPlainText(text);
}
}
getItem()函数需要一个QStringList变量为其ComboBox组件做条目初始化,curIndex指明初始选择项,editable表示对话框里的ComboBox是否可编辑,若不能编辑,则只能在下拉列表中选择。