qt最常见的窗口部位

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 qt最常见的窗口部位,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

标准对话框

颜色对话框

void MyWidget::on_pushButton_clicked()
{
    //  QColor color = QColorDialog::getColor(Qt::red, this, tr("颜色对话框"),
    //                                          QColorDialog::ShowAlphaChannel);

    QColorDialog dialog(Qt::red, this);                // 创建对象
    dialog.setOption(QColorDialog::ShowAlphaChannel); // 显示alpha选项
    dialog.exec();                                    // 以模态方式运行对话框
    QColor color = dialog.currentColor();             // 获取当前颜色

    qDebug() << "color: " << color;
}

引入文件#include<QColorDialog>

diaglog 默认红色 指定父窗口

现在运行程序,然后单击“颜色对话框”按钮,如果不选择颜色,这里的4个数值分别代表透明度(alpha),红色(red),绿色(green)和蓝色( blue)。它们的数值都是从0.0~1.0,有效数字为6位。对于alpha来说,1.0表示完全不透明,这是默认值,而0.0表示完全透明。对于三基色红,绿、蓝的数值,还可以使用0~255来表示,颜色对话框中就是使用这种方法。其中,0表示颜色最浅,255表示颜色最深。在0~255与0.0~1.0之间可以通过简单的数学运算来对应,其中0对应0.0,255对应1

文件对话框

//    QString fileName = QFileDialog::getOpenFileName(this, tr("文件对话框"),
    //                             "D:", tr("图片文件(*png *jpg);;文本文件(*txt)"));

    //    qDebug() << "fileName:" << fileName;

    QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("文件对话框"),
                                                          "D:", tr("图片文件(*png *jpg)"));
    qDebug()<< "fileNames:" << fileNames;

这里使用了QFileDialog类中的getOpenFileName()函数来获取选择的文件名,这个函数会以模态方式运行一个文件对话框。打开后选择一个文件,单击“打开”按钮后,这个函数便可以返回选择的文件的文件名。它的4个参数的作用分别是:指定父窗口、设置对话框标题﹑指定默认打开的目录路径和设置文件类型过滤器。如果不指定文件过滤器,则默认选择所有类型的文件。这里指定了只选择png和 jpg两种格式的图片

字体对话框

字体对话框QFontDialog类提供了一个可以选择字体的对话框部件。先添加#include<QFontDialog≥头文件,然后转到“字体对话框”按钮的单击信号槽,更改如下:

 // ok用于标记是否按下了“OK”按钮
    bool ok;
    QFont font = QFontDialog::getFont(&ok, this);
    // 如果按下“OK”按钮,那么让“字体对话框”按钮使用新字体
    // 如果按下“Cancel”按钮,那么输出信息
    if (ok) ui->pushButton_3->setFont(font);
    else qDebug() << tr("没有选择字体!");

输入对话框

 bool ok;
    // 获取字符串
    QString string = QInputDialog::getText(this, tr("输入字符串对话框"),
                                           tr("请输入用户名:"), QLineEdit::Normal,tr("admin"), &ok);
    if(ok) qDebug() << "string:" << string;
    // 获取整数
    int value1 = QInputDialog::getInt(this, tr("输入整数对话框"),
                                      tr("请输入-1000到1000之间的数值"), 100, -1000, 1000, 10, &ok);
    if(ok) qDebug() << "value1:" << value1;
    // 获取浮点数
    double value2 = QInputDialog::getDouble(this, tr("输入浮点数对话框"),
                                            tr("请输入-1000到1000之间的数值"), 0.00, -1000, 1000, 2, &ok);
    if(ok) qDebug() << "value2:" << value2;
    QStringList items;
    items << tr("条目1") << tr("条目2");
    // 获取条目
    QString item = QInputDialog::getItem(this, tr("输入条目对话框"),
                                         tr("请选择或输入一个条目"), items, 0, true, &ok);
    if(ok) qDebug() << "item:" << item;

这里一共创建了4个不同类型的输入对话框。getText()函数可以提供一个可输入字符串的对话框,各参数的作用分别是:指定父窗口,设置窗口标题、设置对话框中的标签显示文本、设置输入字符串的显示模式(例如密码可以显示成小黑点,这里选择了显示用户输入的实际内容)、设置输人框中的默认字符串和设置获取按下按钮信息的bool变量;getInt()函数可以提供一个输入整型数值的对话框,其中的参数100表示默认的数值是100,—1 000表示可输人的最小值是一1000,1 000表示可输入的最大值是1 000,10表示使用箭头按钮,数值每次变化10; getDouble()函数可以提供一个输入浮点型数值的对话框,其中的参数2表示小数的位数为2;getItem()函数提供一个可以输人一个条目的对话框,需要先给它提供一些条目,例如这里定义的QStringList类型的items,其中参数0表示默认显示列表中的第О个条目(0就是第一个),参数 true 设置条目是否可以被更改, true就是可以被更改。这里使用了静态函数,不过也可以自己定义对象.然后街用相关的函数讲行设詈。

消息对话框

 // 问题对话框
    int ret1 = QMessageBox::question(this, tr("问题对话框"),
                                     tr("你了解Qt吗?"), QMessageBox::Yes, QMessageBox::No);
    if(ret1 == QMessageBox::Yes) qDebug() << tr("问题!");
    // 提示对话框
    int ret2 = QMessageBox::information(this, tr("提示对话框"),
                                        tr("这是Qt书籍!"), QMessageBox::Ok);
    if(ret2 == QMessageBox::Ok) qDebug() << tr("提示!");
    // 警告对话框
    int ret3 = QMessageBox::warning(this, tr("警告对话框"),
                                    tr("不能提前结束!"), QMessageBox::Abort);
    if(ret3 == QMessageBox::Abort) qDebug() << tr("警告!");
    // 错误对话框
    int ret4 = QMessageBox::critical(this, tr("严重错误对话框"),
                                     tr("发现一个严重错误!现在要关闭所有文件!"), QMessageBox::YesAll);
    if(ret4 == QMessageBox::YesAll) qDebug() << tr("错误");
    // 关于对话框
    QMessageBox::about(this, tr("关于对话框"),
                       tr("yafeilinux致力于Qt及Qt Creator的普及工作!"));
}

这里创建了4个不同类型的消息对话框,分别拥有不同的图标还有提示音(这个是操作系统设置的),几个参数分别用于设置父窗口,标题栏,显示信息和拥有的按钮。这里使用的按钮都是QMessageBox类提供的标准按钮。这几个静态函数的返回值就是那些标准按钮,由QMessageBox : : StandardButton枚举类型指定,可以使用返回值来判断用户按下了哪个按钮。about()函数没有返回值,因为它默认只有一个按钮,与其相似的还有一个aboutQt()函数,用来显示现在使用的Qt版本等信息。如果想使用自定义的图标和按钮,那么可以创建QMessageBox类对象,然后使用相关函数进行操作。

进度对话框

 QProgressDialog dialog(tr("文件复制进度"), tr("取消"), 0, 50000, this);
    dialog.setWindowTitle(tr("进度对话框"));     // 设置窗口标题
    dialog.setWindowModality(Qt::WindowModal);  // 将对话框设置为模态
    dialog.show();
    for(int i=0; i<50000; i++) {                // 演示复制进度
        dialog.setValue(i);                     // 设置进度条的当前值
        QCoreApplication::processEvents();      // 避免界面冻结
        if(dialog.wasCanceled()) break;         // 按下取消按钮则中断
    }
    dialog.setValue(50000);    // 这样才能显示100%,因为for循环中少加了一个数
    qDebug() << tr("复制结束!");

这里首先创建了一个 QProgressDialog类对象dialog ,构造函数的参数分别用于设置对话框的标签内容,取消按钮的显示文本,最小值、最大值和父窗口。然后将对话框设置为模态并进行显示。for()循环语句模拟了文件复制过程, setValue()函数使进度条向前推进;为了避免长时间操作而使用户界面冻结,必须不断地调用QCoreApplica-tion类的静态函数 processEvents(),可以将它放在for()循环语句中。使用QPro-gressDialog的 wasCanceled()函数来判断用户是否按下了“取消”按钮,如果是,则中断复制过程。这里使用了模态对话框,QProgressDialog还可以实现非模态对话框,不过它需要定时器等的帮助。

错误信息对话框

 errordlg->setWindowTitle(tr("错误信息对话框"));
    errordlg->showMessage(tr("这里是出错信息!"));

这里首先新建了一个QErrorMessage对话框,并且调用它的 showMessage()函数来显示错误信息,调用这个函数时对话框会以非模态的形式显示出来。错误信息对话框中默认有一个 Show this message again复选框,可以选择以后是否还要显示相同错误信息;为了这个复选框的功能有效。

向导对话框

QWizardPage * MyWidget::createPage1()  // 向导页面1
{
    QWizardPage *page = new QWizardPage;
    page->setTitle(tr("介绍"));
    return page;
}
QWizardPage * MyWidget::createPage2()  // 向导页面2
{
    QWizardPage *page = new QWizardPage;
    page->setTitle(tr("用户选择信息"));
    return page;
}
QWizardPage * MyWidget::createPage3()  // 向导页面3
{
    QWizardPage *page = new QWizardPage;
    page->setTitle(tr("结束"));
    return page;
}

// 向导对话框
void MyWidget::on_pushButton_8_clicked()
{
    QWizard wizard(this);
    wizard.setWindowTitle(tr("向导对话框"));
    wizard.addPage(createPage1());     // 添加向导页面
    wizard.addPage(createPage2());
    wizard.addPage(createPage3());
    wizard.exec();
}

这里新建了QWizard类对象,然后使用addPage()函数为其添加了3个页面。这里的参数是QWizardPage类型的指针,可以直接调用生成向导页面函数。运行程序可以看到,向导页面出现的顺序和添加向导页面的顺序是一致的。

Qframe

QFrame类是带有边框的部件的基类。它的子类包括最常用的标签部件QLabel,另外还有QLCDNumber, QSplitter, QStackedWidget, QToolBox和 QAbstractScrol-lArea类。QAbstractScrollArea类是所有带有滚动区域的部件类的抽象基类,这里需要说明,Qt中凡是带有Abstract字样的类都是抽象基类。抽象基类是不能直接使用的,但是可以继承该类实现自己的类,或者使用它提供的子类

类边框形状的取值

const  desc
QFrame::NoFrame Qframe不进行绘制
Qframe::Box Qframe在其四周绘制边框
Qframe::panel Qframe绘制一个面板,使得内容表现为凸起或凹起
Qframe::Hline Qframe绘制一条水平线(做分离器)
Qframe::Vline 绘制一条垂直直线(做分离器)
Qframe::StylePanel 绘制制一个面板,依赖于GUI样式,使得内容表现为凸起或凹起
Qframe::WinPanel 绘制一个类似于Windows2000中的矩形面板

QLCDNumber

QLCDNumber部件可以让数码字符显示类似液晶数字一样的效果。从部件栏中拖人一个LCD Number部件到界面上,然后更改其属性:选中 smallDecimalPoint项,这样可以显示小数点;digitCount的作用是设置显示的数字的个数,设置为7,表示要显示7个数字; mode选 Dec表示显示十进制数值,这里还可以设置显示为十六进制(Hex),八进制(Oct)和二进制(Bin)数值; segmentStyle用来设置数码的显示样式,这里提供了3种样式,选择Filled;最后将value设置为456.123,这就是要显示的数值,也可以在代码中使用display()函数来设置要显示的数值。设置好后,运行程序查看效果。在QLCDNumber中可以显示的数码有0/O、1,2,3.4,5/S,6,7,8,9/g,负号、小数点、A、B、C,D、E、F,h,H、L,o、P,r,u.U、Y、冒号,度符号(输入时使用单引号来代替)和空格。

QStackedWidget 

QStackedWidget类提供了一个部件栈,可以有多个界面(称为页面),每个界面可以拥有自己的部件,不过每次只能显示一个界面。这个部件需要使用QComboBox或者QList Widget来选择它的各个页面。在设计模式中向界面上拖人一个List Widget和一个 Stacked Widget。在List Widget上右击,在弹出的级联菜单中选择“编辑项目”项,然后在“编辑列表窗口部件”对话框中按下左下角的加号添加两项,并更该名称为“第一页”和“第二页”。然后在Stacked Widget上拖入一个 Label,更改文本为“第一页”,再单击Stacked Widget右上角的小箭头进入下一页,再拖入一个标签,更改文本为“第二页”。然后再将Stacked Widget部件的frameShape属性更改为StyledPanel。最后,在信号和槽设计模式将 listWidget部件的currentRowChanged ( )信号和stacked Widget的 setCurrentIndex()槽关联。设置完成后运行程序可以看到,现在可以单击list Widget中的项目来选择stacked Widget 的页面了。可以在设计模式中在stackedWidget上右击来为它添加新的页面。

QToolBox

QToolBox类提供了一列层叠窗口部件,就像常用的聊天工具QQ中的抽屉效果。从部件栏中选择Tool Box拖入到界面上,右击并在弹出的级联菜单中选择“插入页→在当前页之后”项来新插人一页。然后更改其frameShape属性为Box,并分别单击各个页的标签,更改其currentItemText分别为“好友”“黑名单”和“陌生人”。完成后可以运行程序查看效果。

QlineEdit

显示模式

行编辑器QLineEdit有4种显示模式(echoMode),可以在 echoMode属性中更改它们,分别是:Normal 正常显示输入的信息;NoEcho不显示任何输入,这样可以保证不泄露输入的字符位数;Password 显示为密码样式,就是以小黑点或星号之类的字符代替输人的字符;PasswordEchoOnEdit在编辑时显示正常字符,其他情况下显示为密码样式。

输入掩码

QLineEdit提供了输入掩码(inputMask)来限制输入的内容。可以使用一些特殊的字符来设置输入的格式和内容,这些字符中有的起限制作用且必须要输入一个字符,有的只是起限制作用,但可以不输入字符而是以空格代替。先来看一下这些特殊字符的含义(建议自己查,加深映像!!!!哈哈哈哈哈)

自动补全

  QStringList wordList;
    wordList << "Qt" << "Qt Creator" << tr("你好");
    QCompleter *completer = new QCompleter(wordList, this);   // 新建自动完成器

QAbstractSpinBox

QDateTimeEdit类提供了一个可以编辑日期和时间的部件。到设计模式,从部件栏中分别拖Time Edit 、 Date Edit和 Date/Time Edit到界面上,然后设置timeEdit的displayFormat为”h:mm:ssA”,这就可以使用12 h制来进行显示。对于 dateEdit,选中它的calendarPopup属性,就可以使用弹出的日历部件来设置日期。然后在MyWidget类的构造函数中添加代码:

ui->setupUi(this);
    // 设置时间为现在的系统时间
    ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime());
    // 设置时间的显示格式
    ui->dateTimeEdit->setDisplayFormat(tr("yyyy年MM月dd日ddd HH时mm分ss秒"));

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/129661.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!