小编Rei*_*ica的帖子

自定义派生的std :: exception类的'what'函数返回神秘的废话

我有一个自定义的异常类,派生自std::exception:

CameraControlException.h:

#ifndef CAMERACONTROLEXCEPTION_H
#define CAMERACONTROLEXCEPTION_H

#include <QString>
#include <exception>
#include "ProxOnyx/ProxOnyxUsb1_3M.h"

class CameraControlException : public std::exception
{
    public:
        explicit CameraControlException(QString statusText, int errorNumber);
        virtual const char *what() const noexcept;

    private:
        QString errorMessage;
        int errorNumber;
};

#endif // CAMERACONTROLEXCEPTION_H
Run Code Online (Sandbox Code Playgroud)

CameraControlException.cpp:

#include "CameraControlException.h"
#include <iostream>

CameraControlException::CameraControlException(QString statusText, int errorNumber) :
    errorMessage(QString("Status: ").append(statusText)),
    errorNumber(errorNumber)
{
    this->errorMessage.append("\nSome text in new line");
}

const char *CameraControlException::what() const noexcept {
    // Output the message like return them:
        std::cout << "this->errorMessage.toLatin1().data(): " …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance qt exception std

0
推荐指数
1
解决办法
70
查看次数

在图中使用队列进行拓扑排序

下面是我对队列拓扑排序算法的阅读,写在我的教科书中:

void topologicalsort(struct Graph* G){
    struct queue* Q;
    int counter;
    int v,w;
    Q=createqueue();
    counter=0;
    for(v=0;v<G->V;v++){
       if(indegree[v]==0)
          enqueue(Q,v);
       while(!isemptyqueue(Q)){
          v=dequeue(Q);
          topologicalorder[v]=++counter;
          for each w to adjacent to v
             if(--indegree[w]==0){
             enqueue(Q,w);
             }


       }
    } 
} 
Run Code Online (Sandbox Code Playgroud)

对于下图,该算法失败:

图算法失败

如果在给定的图中最初 7 5 3 的入度为零,那么它们将被插入到队列中,但是对于与7 5 3我们相邻的任何顶点,我们都没有任何度为 1 的顶点。这意味着这if(--indegree[w]==0)将不成立,7 5 3因此有将不会在队列内进一步排队,因此该算法将不会处理更多的顶点。如果图形是 DAG,我想知道为什么算法会失败?哪种方式不正确?

我知道我们也可以使用 DFS 实现拓扑排序,但我想按原样实现以下内容:

我要实现的算法的伪代码

c sorting algorithm graph-theory depth-first-search

0
推荐指数
1
解决办法
1840
查看次数

如何将列表理解与非理解项目混合?

我想从一些单独的项目以及由列表理解定义的项目组构建一个列表。假设我想要一个 list ['foo', 0, 2, 4, 'bar']0,2,4从哪里来的理解。我知道的唯一方法是:

['foo'] + [x*2 for x in range(3)] + ['bar']
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有明确附加的情况下做到这一点?我正在寻找一些与以下非工作所需语法等效的巧妙方法:

['foo', x*2 for x in range(3), 'bar'] # invalid syntax :(
Run Code Online (Sandbox Code Playgroud)

我的假设是,当使用显式+运算符时,类似的语法可能会避免创建所有中间临时列表,然后必须逐个复制这些中间临时列表,以便将它们附加到正在构建的列表中。

对于 Python 2.7 和 3.x,我正在寻找一种最好是 Pythonic(惯用语)的解决方案 - 如果它们不同的话。

激励代码如下,ScreamingBOM命名元组在哪里- 我正在尝试构建元组,同时创建尽可能少的临时变量,因为其中一些可能变得相当大。

def make_screaming_bom(self, bom):
    return ScreamingBOM(
        summary = [
            ['', '', 'generated on: %s' % bom.time],
            ['', bom.unique_parts, 'unique parts'],
            []
        ]
        + [['', count, 'total %s' % (type)] for type, count in bom.counts.items()]
        + …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension

0
推荐指数
1
解决办法
39
查看次数

信号和插槽Qt不工作

myslot没有被调用.MyPage是一个QWizardPage.

MyPage::initializePage()
{  
  connect(this,SIGNAL(mysignal), this,SLOT(myslot()));
  emit mysignal();
}


void ProgressPage::myslot(){
  cout<<"in ";
}
Run Code Online (Sandbox Code Playgroud)

我的头文件包含以下信号和插槽,

public slots:
  void myslot();

signals:
  void mysignal();
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我的调试器执行直到发出,但无法进入插槽.

c++ qt

-1
推荐指数
1
解决办法
127
查看次数

QLabel:缩放图像以放大和降低图片质量

嘿,所以我有这个功能,它可以很好地工作和缩放图像,并且会根据 UI 中的正确快捷方式缩小和扩展它。

但是,当我缩放回图像的原始缩放比例时,我的图片质量会下降。我试过制作'orig',它是一个全局'const QPixmap*'。'orig' 是在图像加载到 UI 时定义的。然后我设置了 'pixmap = orig'(见下面的代码),但这似乎不起作用,我不知道为什么。

这个想法是在不重写原始像素图的情况下制作它的副本,以保持像素质量,然后在调用函数时重新加载原始像素图。

void FragTreeViewer::scaleImage(double factor)
{
  Q_ASSERT(imageLabel->pixmap());
  const QPixmap* pixmap = orig;
  scaleFactor *= factor;
  int w = (imageLabel->width())*scaleFactor;
  int h = (imageLabel->height())*scaleFactor;
  imageLabel->setPixmap(pixmap->scaled(w, h, Qt::KeepAspectRatio));


  adjustScrollBar(scrollArea->horizontalScrollBar(), scaleFactor);
  adjustScrollBar(scrollArea->verticalScrollBar(), scaleFactor);

  //zoomInAct->setEnabled(scaleFactor < 3.0);
  //zoomOutAct->setEnabled(scaleFactor > 0.333);
}
Run Code Online (Sandbox Code Playgroud)

http://postimg.org/image/3ukrme54b/

scaling qt zooming pixmap

-1
推荐指数
1
解决办法
4473
查看次数

不明白Qt&符号和按位AND操作:if(ev-> buttons()&Qt :: RightButton)

我有以下代码:

void OpenGLRenderer::mouseMoveEvent(QMouseEvent *ev)
{
    //...

    if(ev->buttons() & Qt::RightButton)
    {
        if(ev->modifiers() & Qt::ShiftModifier)
        {
            // ...
        }
        else
        {
            // ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白&符号的&比较是如何起作用的.这是&一个有点明智的AND操作吗?该声明如何ev->buttons() & Qt::RightButton运作?

c++ qt

-1
推荐指数
1
解决办法
94
查看次数