QPrinter printer;
QPrintDialog printDialog(&printer);
if(printDialog.exec())
{
QString qstrPrinterName = printer.printerName();
memset(szBufferDefaultPrinterName,0,256);
DWORD length = 256;
GetDefaultPrinter(szBufferDefaultPrinterName,&length);
SetDefaultPrinter(qstrPrinterName.toStdString().c_str());
const ushort* pdfPath = qstrPDFPath.utf16();
ShellExecuteW(NULL,L"print",pdfPath,NULL,NULL,SW_SHOW);
SetDefaultPrinter(szBufferDefaultPrinterName);
}
注:
标准库的std::string转换成LPCSTR很简单:直接调用c_str()即可。例: std::string a="abc"; LPCSTR str = a.c_str(); 标准库还有一个wstring,代表宽字符的string,std::wstring转换成LPCWSTR也一样很简单: std::wstring a = L"abc"; LPCWSTR str = a.c_str();