我想创建一个sin cos查找表进行优化,使用从0到0的数组索引UCHAR_MAX,这样0弧度就是索引0,pi/2radian是UCHAR_MAX/4:
sincos.h
#include <limits.h>
#include <math.h>
int sini[UCHAR_MAX];
int cosi[UCHAR_MAX];
#define MAGNIFICATION 256
#define SIN(i) sini[i]/MAGNIFICATION
#define COS(i) cosi[i]/MAGNIFICATION
void initTable(){
for(int i=0;i<UCHAR_MAX;i++){
sini[i]=sinf(i*2*M_PI/UCHAR_MAX)*MAGNIFICATION;
cosi[i]=cosf(i*2*M_PI/UCHAR_MAX)*MAGNIFICATION;
}
}
Run Code Online (Sandbox Code Playgroud)
使用UCHAR_MAXas max 的原因是我想充分利用unsigned char overflow来模拟从0到2*pi只变化的弧度:例如,如果radian的值是2*pi,则数组的索引变为UCHAR_MAX,因为它溢出,它自动变为0并且不需要mod(如果我使用0到360作为域,我可能index%360每次都需要计算).然后我用一些弧度值测试它:
float rad[]={2.0f,4.0f,6.0f,8.0f,10.0f,-2.0f,-4.0f,-6.0f,-8.0f,-10.0f};
Run Code Online (Sandbox Code Playgroud)
如下:
#include "sincos.h"
#include <stdio.h>
int main(){
initTable();
unsigned char radToIndex;
float rad[]={2.0f,4.0f,6.0f,8.0f,10.0f,-2.0f,-4.0f,-6.0f,-8.0f,-10.0f};
int scalar=123;
printf("scalar=%d\n",scalar);
for(int i=0;i<sizeof(rad)/sizeof(float);i++){
radToIndex=rad[i]*UCHAR_MAX/2/M_PI;
printf("%d*sin(%f) : %f , %d\n",scalar,rad[i],scalar*sinf(rad[i]),scalar*SIN(radToIndex));
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我测试了表 …
为了我的目的,我想以原始格式(仅样本),8kHz,16bit(小端)和1个通道录制声音.然后,我想将这些样本传输到窗口并使用QAudioOutput播放它.所以我有两个独立的程序:一个用于使用QAudioInput录制语音,另一个用于提供包含一些样本的文件,然后我用QAudioOutput播放它.下面是我创建QAudioInput和QAudioOutput的源代码.
//Initialize audio
void AudioBuffer::initializeAudio()
{
m_format.setFrequency(8000); //set frequency to 8000
m_format.setChannels(1); //set channels to mono
m_format.setSampleSize(16); //set sample sze to 16 bit
m_format.setSampleType(QAudioFormat::UnSignedInt ); //Sample type as usigned integer sample
m_format.setByteOrder(QAudioFormat::LittleEndian); //Byte order
m_format.setCodec("audio/pcm"); //set codec as simple audio/pcm
QAudioDeviceInfo infoIn(QAudioDeviceInfo::defaultInputDevice());
if (!infoIn.isFormatSupported(m_format))
{
//Default format not supported - trying to use nearest
m_format = infoIn.nearestFormat(m_format);
}
QAudioDeviceInfo infoOut(QAudioDeviceInfo::defaultOutputDevice());
if (!infoOut.isFormatSupported(m_format))
{
//Default format not supported - trying to use nearest
m_format = infoOut.nearestFormat(m_format);
}
createAudioInput();
createAudioOutput();
}
void …Run Code Online (Sandbox Code Playgroud) 当用户启动并结束QTableView窗口小部件单元格编辑时,是否有任何信号(我在文档中找不到任何内容)?
我想从表模型执行一些功能,然后用户开始编辑eny单元格,并在用户结束编辑时执行另一个功能.我怎样才能做到这一点?
QTableWidget我的应用程序中有一个小部件。我必须在我的应用程序中分别处理单击和双击鼠标事件。现在,即使我双击一个单元格,也只调用一次单击槽。如何分别处理?
以下是信号插槽连接的代码:
connect(ui.tableWidget, SIGNAL(cellClicked(int, int)), this, SLOT(myCellClicked(int, int)));
connect(ui.tableWidget, SIGNAL(itemDoubleClicked(QTableWidgetItem*)), this, SLOT(tableItemClicked(QTableWidgetItem*)));
Run Code Online (Sandbox Code Playgroud)
我在这里缺少任何其他配置吗?
我正在批量制作基于文本的游戏,我想知道如果玩家按下向上箭头键是否可以完成任务?我浏览了帮助文件,并进行了Google搜索,但没有解决方案。因为使用Windows RT设备,所以无法安装任何其他软件。另外,如果不能批量完成,可以在VBS或Powershell中完成吗?
以下代码中出现此错误的原因可能是什么?
loginButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v){
final String e_mail = e_mailEditText.getText().toString();
final String password = passwordEditText.getText().toString();
// Response received from the server
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
String name = jsonResponse.getString("name");
// int age = jsonResponse.getInt("age");
Intent intent = new Intent(login.this, Welcome.class);
intent.putExtra("name", name);
// intent.putExtra("age", age);
intent.putExtra("e_mail", e_mail);
login.this.startActivity(intent);
} else {
AlertDialog.Builder builder …Run Code Online (Sandbox Code Playgroud) 因此,我们的想法是向用户询问数组的每个元素,但在为第一个问题(它要求元素数量)提供输入后,没有任何反应.无法弄清楚为什么.
#include <iostream>
int main()
{
int numGrades;
tryAgain:
std::cout << "Enter number of grades" << std::endl;
std::cin >> numGrades;
if (numGrades > 30)
{
std::cout << "Please enter a valid number of grades" << std::endl;
goto tryAgain;
}
int grades[numGrades - 1];
int gradeCount = 0;
while (gradeCount < numGrades);
{
std::cout << "Enter grade number" << gradeCount + 1 << ":";
std::cin >> grades[gradeCount];
++ gradeCount;
}
std::cout << grades;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个我正在使用QTableWidgets的应用程序,我需要将其背景设置为透明,我已尝试setStyleSheet "background:transparent;"从形式,但没有任何反应,有没有其他方法可以做到这一点?我发布了截图

我知道没有括号就不能调用函数,但是,假设我有这段源代码:
#include<iostream>
using namespace std;
ostream& test(ostream& os){
os.setf(ios_base::floatfield);
return os;
}
int main(){
cout<<endl<<scientific<<111.123456789;
cout<<endl<<test<<111.123456789;
}
/// Output:
/// 1.11235e+002
/// 111.123
Run Code Online (Sandbox Code Playgroud)
没有左移位运算符重载任何,但是当我打电话的test(ostream& os)功能中cout的main功能,它不需要任何括号.我的问题是为什么?
我想在Qt项目中使用临时文件
我试试这段代码:
QTemporaryFile file;
file.open();
QTextStream stream(&file);
stream << content; // content is a QString
qDebug() << file.readAll();
Run Code Online (Sandbox Code Playgroud)
但控制台显示一个空字符串:
""
Run Code Online (Sandbox Code Playgroud)
我怎么能写一个字符串QTemporaryFile?
c++ ×5
qt ×5
alsa ×1
arrays ×1
audio ×1
background ×1
batch-file ×1
c ×1
function ×1
json ×1
keystroke ×1
manipulators ×1
math ×1
ostream ×1
qtableview ×1
qtablewidget ×1
transparency ×1
trigonometry ×1
while-loop ×1