Qt Gui 第三章~第四章

一、图片资源的调用

  

  如上图是我图片存放的位置跟qrc的命名;

  如下则是qrc对应的编写格式;  

复制代码
<RCC>
<qresource>
    <file>images/icon.png</file>
                      .
                      .
                      .
    <file>images/gotocell.png</file>
</qresource>
</RCC>
复制代码

  当qrc放置好之后,则需要在pro文件中添加对应的文件配置:RESOURCES = spreadsheet1.qrc

  当完成这些操作之后则可以自由地调用images中存在,并且qrc中已经描述的文件;

  比如:QIcon(":/images/gotocell.png")

  

二、QAction的使用

  任何QT窗口部件都可以有一个与之相关联的QActions列表。当需要统一操作,而各个控件不一样的时候,可以通过QAction来预操作;具体可以看帮助文档;

  比如可以读取存储在action里面的data;

        QAction* action = qobject_cast<QAction*>(sender());
        if (action)
            loadFile(action->data().toString());

  这里通过sender()可以获取触发槽对应的信号的对象;比如:

   connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));

  在about()函数中调用sender();则会返回对应的aboutAction

 

三、QSettings的使用

    QSettings settings("Software Inc.", "Spreadsheet");

    settings.setValue("geometry", saveGeometry());
    settings.setValue("recentFiles", recentFiles);
    settings.setValue("showGrid", showGridAction->isChecked());
    settings.setValue("autoRecalc", autoRecalcAction->isChecked());

  可以通过该类设置对应的key,value到系统中;当该软件再次打开的时候,可以再次获取到之前软件中保存的一些设置;

    QSettings settings("Software Inc.", "Spreadsheet");
    restoreGeometry(settings.value("geometry").toByteArray());
    recentFiles = settings.value("recentFiles").toStringList();
    updateRecentFileActions();
    bool showGrid = settings.value("showGrid", true).toBool();
    showGridAction->setChecked(showGrid);
    bool autoRecalc = settings.value("autoRecalc", true).toBool();
    autoRecalcAction->setChecked(autoRecalc);

 

 

四、模态跟非模态对话框;

  非模态对话框

    findDialog = new FindDialog(this);
    findDialog->show();
    findDialog->raise();
    findDialog->activateWindow();

  模态对话框

GoToCellDialog dialog(this);
dialog.exec()

  当非模态的对话框要变成模态对话框则需要调用函数 findDialog->setModel();

 

 

  问题描述:

  mac中,在菜单中无法指定位置显示

    fileMenu->addAction(exitAction);
    helpMenu = menuBar()->addMenu(tr("&Help"));
    helpMenu->addAction(aboutAction);
    helpMenu->addAction(aboutQtAction);

  这是因为在mac中这几个是全局窗口模式的,所以无法根据自己的设置进行显示;如下图所示:

  

 

 

posted @   LCAC  阅读(175)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示