zhu=10; num=ui->spinBox->value(); zhu = num * zhu; //QString str2 =QString::number(zhu); QString aa; aa.setNum(zhu); //QString str3 =QString("金额:%1").arg(str2); ui->zhu1->setText("%1").arg(aa);有什么问题
时间: 2024-01-22 09:02:13 浏览: 25
这段代码看起来有些问题。首先,它将 `zhu` 的值设置为 10,但这个值在后面的代码中被覆盖了。其次,它使用了一个叫做 `ui` 的对象,但是我们并不知道这个对象是什么。最后,`ui->zhu1->setText("%1").arg(aa)` 这一行的语法是不正确的,应该将 `arg(aa)` 放在括号内,如下所示:
```
ui->zhu1->setText(QString("金额:%1").arg(aa));
```
正确的代码应该是这样的:
```
int zhu = 10;
int num = ui->spinBox->value();
zhu = num * zhu;
QString aa = QString::number(zhu);
ui->zhu1->setText(QString("金额:%1").arg(aa));
```
这样就能正确地将乘积显示在界面上了。
相关问题
在QT里,有一个int A=ui->spinBox->value()*2+ ui->spinBox_2->value()*1.5+ ui->spinBox_3->value()*15+ ui->spinBox_4->value()*10+ ui->spinBox_5->value()*6+ ui->spinBox_6->value()*3+ ui->spinBox_7->value()*15+ ui->spinBox_8->value()*15+ ui->spinBox_9->value()*5;我需要A的值可以显示在QMessageBox msgBoxa里
您可以使用以下代码将A的值显示在QMessageBox中:
```
int A = ui->spinBox->value()*2 + ui->spinBox_2->value()*1.5 + ui->spinBox_3->value()*15 + ui->spinBox_4->value()*10 + ui->spinBox_5->value()*6 + ui->spinBox_6->value()*3 + ui->spinBox_7->value()*15 + ui->spinBox_8->value()*15 + ui->spinBox_9->value()*5;
QMessageBox msgBoxa;
msgBoxa.setText("A=" + QString::number(A));
msgBoxa.exec();
```
这里首先计算出A的值,然后使用QString::number()将其转换为QString类型,并将其作为QMessageBox的文本内容。最后使用msgBoxa.exec()函数显示QMessageBox。
HWND hwnd ; // 获取窗口句柄 hwnd = windows.at(ui->spinBox->value());使用hwnd截图
了解了您的问题,您是想通过获取窗口的句柄来实现截屏功能。在 Windows 平台上,可以使用以下方式来实现:
```c++
#include <Windows.h>
bool CaptureScreen(HWND hWnd, const char* filename) {
HDC hDc = GetDC(hWnd);
HDC hMemDc = CreateCompatibleDC(hDc);
RECT rcClient;
GetClientRect(hWnd, &rcClient);
int nWidth = rcClient.right - rcClient.left;
int nHeight = rcClient.bottom - rcClient.top;
HBITMAP hBitmap = CreateCompatibleBitmap(hDc, nWidth, nHeight);
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDc, hBitmap);
BitBlt(hMemDc, 0, 0, nWidth, nHeight, hDc, 0, 0, SRCCOPY);
SelectObject(hMemDc, hOldBitmap);
DeleteDC(hMemDc);
ReleaseDC(hWnd, hDc);
PBITMAPINFO pbi;
pbi = CreateBitmapInfoStruct(hWnd, hBitmap);
LPBYTE lpBits;
lpBits = (LPBYTE)GlobalAlloc(GMEM_FIXED, pbi->bmiHeader.biSizeImage);
GetDIBits(hMemDc, hBitmap, 0, (UINT)pbi->bmiHeader.biHeight, lpBits, pbi, DIB_RGB_COLORS);
HANDLE hf;
BITMAPFILEHEADER hdr;
PBITMAPINFOHEADER pbih;
LPBYTE lpData;
DWORD dwTotal;
DWORD cb;
BYTE* hp;
DWORD dwTmp;
pbih = (PBITMAPINFOHEADER)pbi;
lpData = (LPBYTE)(lpBits + pbih->biSize + pbi->bmiHeader.biClrUsed * sizeof(RGBQUAD));
dwTotal = ((DWORD)(pbih->biSizeImage + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)));
hdr.bfType = 0x4d42;
hdr.bfSize = dwTotal;
hdr.bfReserved1 = 0;
hdr.bfReserved2 = 0;
hdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER) + pbi->bmiHeader.biClrUsed * sizeof(RGBQUAD);
hf = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, (DWORD)0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
if (hf == INVALID_HANDLE_VALUE) return false;
WriteFile(hf, (LPVOID)&hdr, sizeof(BITMAPFILEHEADER), (LPDWORD)&dwTmp, NULL);
WriteFile(hf, (LPVOID)pbih, sizeof(BITMAPINFOHEADER) + pbi->bmiHeader.biClrUsed * sizeof(RGBQUAD), (LPDWORD)&dwTmp, (NULL));
WriteFile(hf, (LPVOID)lpData, (DWORD)pbih->biSizeImage, (LPDWORD)&dwTmp, NULL);
CloseHandle(hf);
GlobalFree((HGLOBAL)lpBits);
DeleteObject(hBitmap);
return true;
}
```
上面的代码中,`CaptureScreen` 函数接收两个参数:`hWnd` 表示窗口句柄,`filename` 表示截图保存的文件名。该函数实现了从指定窗口截图,并将截图保存到指定文件中的功能。
注:上述代码中使用了一些辅助函数,如 `CreateBitmapInfoStruct`,请根据实际情况进行实现。