我怀疑以下代码片段...
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.
我正在编写一个将地址直接打印到信封上的应用程序.我正在使用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)
谢谢!
以下代码段在编译时会生成一些警告消息:
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)
警告是:
-Wreturn-type]我知道如果条件失败,我不会返回值.但是,当我尝试return 0它时给了我错误.
我该如何解决这些问题?
当我的应用程序中调用此复制构造函数时,此复制构造函数进入无限循环,即它不断调用自身.当我调试在第一行终止的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) 我有三个类,所有这些类都来自不同的命名空间,如下所示:
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)
我被困在这,请帮我解决这个问题.