2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口



1
新建一个空项目

A
编写 .pro文件

QT
+=
gui widgets

 

HEADERS
+=
\

   
MyDialog.h

 

SOURCES
+=
\

   
MyDialog.cpp

B
编写MyDialog.h

#ifndef
MYDIALOG_H

#define
MYDIALOG_H

 

#include
<QDialog>

 

class
MyDialog:public
QDialog

{

   
Q_OBJECT

public:

   
explicit
MyDialog(QWidget
*parent
= 0);

 

   
QString
_strDir;

   
void
paintEvent(QPaintEvent
*);

 

signals:

 

public
slots:

   
void
slotButtonClick();

};

 

#endif
//
MYDIALOG_H


编写:MyDialog.cpp

#include "MyDialog.h"
#include <QPushButton>
#include <QDebug>
#include <QFileDialog>
#include <QFileInfo>
 
#include <QColorDialog>
#include <QFontDialog>
#include <QMessageBox>
#include <QPainter>
 
#include <QApplication>
 
MyDialog::MyDialog(QWidget *parent) :
    QDialog(parent)
{
    QPushButton* button = new QPushButton("Click me",this);
    connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClick()));
}
 
void MyDialog::slotButtonClick()
{
#if 0
    QDialog* dlg = new QDialog;
    int ret;
    QPushButton* button = new QPushButton(dlg);
    connect(button, SIGNAL(clicked()), dlg, SLOT(reject()));
 
    /*
     * 在模态对话框中,exec有自己的消息循环,并且把app的消息循环接管了
     * 如果Dialog是通过exec来显示,那么可以通过accepted或者rejected来关闭
     * 窗口,如果Dialog是通过show来显示,那么可以通过close来关闭窗口,
     * 这个和QWidget一样的
     *
     * 有许多特殊的dailog:文件选择,MessageBox,颜色选择,字体选择,打印预览,打印
     */
    ret = dlg->exec();
    if(ret == QDialog::Accepted)
    {
        qDebug() << "accepted";
    }
    if(ret == QDialog::Rejected)
    {
        qDebug() << "rejected";
}
//上面的运行结果如下:

#endif
#if 0
    //通过下面的方式打开保存文件
QString strFilename = QFileDialog::getSaveFileName(
NULL,
                          "Select file for save",
                          _strDir,
                          "pic file (*.png *.jpg)");
//运行结果:

#endif
#if 0 
    //打开一个文件

#endif
#if 0
     //选择一个存在的文件夹
    QString strFilename = QFileDialog::getExistingDirectory();
    if(strFilename.isEmpty())
    {
        qDebug() << "select none";
        return;
    }
 
    qDebug() << strFilename;
    QFileInfo fileInfo(strFilename);
    _strDir = fileInfo.filePath();
  
#endif
#if 0
//颜色选择框
QColorDialog color;
    color.exec();
QColor c = color.selectedColor();

#endif
#if 0
//字体选择器
QFontDialog fontDialog;
    fontDialog.exec();
QFont font = fontDialog.selectedFont();

#endif
#if 0
//MessageBox,消息提示窗口
    int ret = QMessageBox::question(this, "????", "realy do .......",
              QMessageBox::Yes| QMessageBox::No|
              QMessageBox::YesAll| QMessageBox::NoAll);
    if(ret == QMessageBox::Yes)
    {
         qDebug() << "user select yes";
    }
    if(ret == QMessageBox::No)
    {
         qDebug() << "user select no";
    }

#endif
}
 
void MyDialog::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    p.drawLine(QLine(0,0,200,200));
}
 
int main(int argc,char* argv[])
{
    QApplication app(argc,argv);
 
    MyDialog dlg;
    dlg.show();
 
    return app.exec();
}

 

时间: 2024-10-03 10:09:32

2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口的相关文章

界面-QT中如何实现多窗口切换

问题描述 QT中如何实现多窗口切换 要求在QT中实现一个登录界面内有多个不同的button,通过button调用显示各相应的子窗口,在子窗口中布有lineedit和button部件. 解决方案 这个很简单,QWidgetStack就能实现 解决方案二: 第一步:连接按钮的信号和槽 connect(ui->pushButton_login, SIGNAL(clicked()), this, SLOT(CheckIdentity())); 第二步:假设你要进入MainGuide这个子界面,创建该类,

qt4-Qt中使用Quazip解压缩zip文件

问题描述 Qt中使用Quazip解压缩zip文件 我的开发平台是vs2008 + Qt 4.8.6,现在需要解压zip 文件,刚接触Qt,并不是很了解,网上找到的quazip库都是基于Qt5的,放在项目里面会有一个段错误,我没明白为什么会有段错误,敬请各路大神,帮帮忙! 解决方案 Qt调用zlib开源库解压自拍文件:具体详见http://blog.csdn.net/tax10240809163com/article/details/50958567 解决方案二: 直接调用rar.exe解压缩,因

母窗口-QT中怎么在一个窗口中获得另一个窗口的指针?

问题描述 QT中怎么在一个窗口中获得另一个窗口的指针? 我用Widget作为母窗口,在其主函数中用信号槽建立了一个Dialog的窗口,那么这个Dialog窗口是不是Widget的子窗口呢?如果是的话,我想通过信号槽在Dialog中调用Widget中的数据,这样的话Widget母窗口应该是SIGNAL信号,在信号槽函数中需要使用它的指针.我在建立Dialog窗口的时候用new Dialog(this)将主函数指针传递给子函数,在子函数函数体的信号槽中槽函数写的parentWidget () 获得母

JQuery Dialog(JS 模态窗口,可拖拽的DIV)_jquery

效果图     调用示意图   交互示意图 如上图所示,这基本是JQueryDialog的完整逻辑流程了. 1.用户点击模态窗口的"提交"按钮时,调用JQueryDialog.Ok()函数,这个函数对应了用户提交事件. 2.用OO的概念来说,JQueryDialog.Ok()其实是一个虚函数,它的逻辑封装在子窗口ContentWindow.Ok()中,这一点我借鉴了FCKEditor,如下代码所示: JS代码 复制代码 代码如下: var JQueryDialog = { /// &l

在asp.cs的页面中 如何弹出一个模态窗口 然后一秒后自动关闭 ()

问题描述 在asp.cs的页面中 如何弹出一个模态窗口 然后一秒后自动关闭 () 如题,在asp.cs的页面中 如何弹出一个模态窗口 然后一秒后自动关闭 (求高手指教) 解决方案 http://www.3lian.com/edu/2013/05-22/71072.html

qt c++-Qt中,到底如何实现主窗口和子窗口之间的通信?

问题描述 Qt中,到底如何实现主窗口和子窗口之间的通信? RT,比如,当子窗口关闭时,重新打开主窗口.这个是如何通信的,希望能给上例子.我知道是用信号和槽,可是两个窗口(类)之间的信号和槽我还不太会.网上也没找到具体的例子.希望大婶们能给个好点的直观的例子. 解决方案 主窗体类为A,子窗体类为B,在A中实例化B,其对象为b,关闭b,但不要释放b,调用b的public方法返回数据.仔细理解. void A::buttonClick(){ B b; b.exec(); b.getData();} 或

QT中QListWidget窗口中条目更新,如何让它动态显示出来

问题描述 QT中QListWidget窗口中条目更新,如何让它动态显示出来 我做的是一个公交车报站系统,在点击完模拟按钮后,会模拟走完整条路线,但是QListWidget不会动态更新,其中的数据处理部分还是会进行 附上模拟按钮的代码 /* simulate */ void MyDialog::on_pushButton_3_clicked() { while (1) { // 先清空显示 ui->listWidget->clear(); QFile file("bus_.xml&qu

angularjs-angular+uikit ng-repeat中加模态窗口点击&amp;amp;lt;a data-uk-modal&amp;amp;gt;会自动重载页面这是为什么

问题描述 angular+uikit ng-repeat中加模态窗口点击<a data-uk-modal>会自动重载页面这是为什么 angular+uikit ng-repeat中加模态窗口点击 <a href = ""#XXX"" data-uk-modal> 会自动重载页面然后我继续点相同的 <a href = ""#XXX"" data-uk-modal> 模态窗口才显示出来,之后如果

MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序

MFC应用程序中处理消息的顺序 1.AfxWndProc()      该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,                    然后调用WindowProc()函数 3.WindowProc()      该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.O