小编sho*_*fee的帖子

QAudioInput :: byteReady()和QIODevice :: read()给出不同的字节数

我怀疑以下代码片段...

const qint64 bytesReady = m_audioInput->bytesReady();
const qint64 bytesSpace = m_buffer.size() - m_dataLength;
const qint64 bytesToRead = qMin(bytesReady, bytesSpace);
const qint64 bytesRead = m_audioInputIODevice->read(m_buffer.data() + m_dataLength, bytesToRead);
Run Code Online (Sandbox Code Playgroud)

bytesReady()方法给了我一个特定的字节数,并将这些字节数传递给QIODevice的read(),它将返回读取的字节数.

问题是bytesRead不等于bytesToRead.并且我从读取方法获得固定的字节数,即320,640,960,1280等,这取决于byteToRead.

qt qt4.8

6
推荐指数
1
解决办法
2119
查看次数

信封的QTextDocument中的页码

我正在编写一个将地址直接打印到信封上的应用程序.我正在使用QTextDocument,问题是它的方法print()添加了页码,这在信封中是不正确的.

一些代码,以防您需要它:

void MainWindow::print()
{
    QString addressText = textEdit->document()->toPlainText();
    envelopeDocument = new QTextDocument(this);
    printer.setResolution(QPrinter::HighResolution);
    printer.setPrinterName("OKI B6200(PCL6)");
    printer.setOrientation(QPrinter::Landscape);
    QFont font("Trebuchet MS");
    switch (envelopeComboBox->currentIndex()){
    case 0:
        font.setPointSize(12);
        envelopeDocument->setDefaultFont(font);
        envelopeDocument->setPlainText(addressText);
        printer.setPaperSize(QSizeF(114,225),QPrinter::Millimeter);
        printer.setPageMargins(120,60,20,15,QPrinter::Millimeter);
        break;
    case 1:
        font.setPointSize(14);
        envelopeDocument->setDefaultFont(font);
        envelopeDocument->setPlainText(addressText);
        printer.setPaperSize(QSizeF(184,262),QPrinter::Millimeter);
        printer.setPageMargins(140,100,20,20,QPrinter::Millimeter);
        break;
    case 2:
        font.setPointSize(16);
        envelopeDocument->setDefaultFont(font);
        envelopeDocument->setPlainText(addressText);

        printer.setPaperSize(QSizeF(227,324), QPrinter::Millimeter);
        printer.setPageMargins(170,120,30,40,QPrinter::Millimeter);
        break;
    }

    QPrintPreviewDialog preview (&printer,this);
    preview.setWindowFlags(Qt::Window);
    connect(&preview, SIGNAL(paintRequested(QPrinter *)),SLOT(printPreview(QPrinter *)));
    preview.exec();
}

void MainWindow::printPreview(QPrinter *p)
{
    envelopeDocument->print(p);
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ qt

3
推荐指数
1
解决办法
1808
查看次数

控制到达非空函数的结束

以下代码段在编译时会生成一些警告消息:

Cluster& Myclass::getCluster(const Point &p)
{
    foreach (Cluster c, *this)
        foreach (Point point, c)
            if (point == p)
                return c;
}
Run Code Online (Sandbox Code Playgroud)

警告是:

  1. 对返回的局部变量'c'的引用[默认启用]
  2. 控制到达非空函数的末尾[使用时-Wreturn-type]

我知道如果条件失败,我不会返回值.但是,当我尝试return 0它时给了我错误.

我该如何解决这些问题?

c++ qt return

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

错误:模板化复制构造函数调用自身

当我的应用程序中调用此复制构造函数时,此复制构造函数进入无限循环,即它不断调用自身.当我调试在第一行终止的pogram时.使用的foreach循环是Qt foreach.

template<class TValue>
Locus<TValue>::Locus (const Locus<TValue>& source ) : QVector<TValue>(source) // program terminates here
{
    std::cout << "calling self from here " << std::endl;
    foreach (typename Locus<TValue>::value_type l, source)
    {
        this->push_back(l);
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ qt copy-constructor

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

C++命名空间问题

我有三个类,所有这些类都来自不同的命名空间,如下所示:

classA.h

namespace outer
{
    namespace inner
    {
        class ClassA
        {
           ....
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

classB.h

namespace inner
{
    class ClassB
    {
        ...
    };
}
Run Code Online (Sandbox Code Playgroud)

classC.h

#include <classB.h>

namespace outer
{
    namespace inner2
    {
        using inner::ClassB; // error here, says outer::inner2::ClassB has not been declared.

        class ClassC
        {
            ....
        };
     }
}
Run Code Online (Sandbox Code Playgroud)

我被困在这,请帮我解决这个问题.

c++ namespaces

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

标签 统计

c++ ×4

qt ×4

copy-constructor ×1

namespaces ×1

qt4.8 ×1

return ×1