Вы возвращаете строку, которая просто говорит фразу _name + _number + _date + _salary
.
То, что вы, вероятно, хотели сделать, это построить строку, используя эти поля. Если вы хотите, чтобы все они были собраны вместе Concat , он был бы очень не читаемым
public override string ToString()
{
return String.Concat(_name, _number, _date, _salary);
}
Однако было бы лучше использовать Format и включают метки со значениями
public override string ToString()
{
return String.Format("Name:{0}, Number:{1}, Date:{2}, Salary:{3}",_name, _number, _date, _salary);
}
. Если вы используете C # 6 или новее, вы можете использовать следующий формат очистки
public override string ToString()
{
return $"Name:{_name}, Number:{_number}, Date:{_date}, Salary:{_salary}";
}
. Который является точным той же логики, что и предыдущая версия String.Format
.
Я уверен, что это зависит от платформы. winIds - это HWND в Windows, поэтому вы можете вызвать FindWindow(NULL, "Untitled - Notepad")
в примере, который вы дали.
Хотя на это уже был дан ответ, только для полноты, я добавлю к сообщению Тревора Бойда Смита (см. выше) пример кода:
void MainWindow::on_myButton_GUI_Screeshot_clicked()
{
QPixmap qPixMap = QPixmap::grabWidget(this); // *this* is window pointer, the snippet is in the mainwindow.cpp file
QImage qImage = qPixMap.toImage();
cv::Mat GUI_SCREENSHOT = cv::Mat( qImage.height(),
qImage.width(), CV_8UC4,
(uchar*)qImage.bits(),
qImage.bytesPerLine() );
cv::imshow("GUI_SCREENSHOT",GUI_SCREENSHOT);
}
Посмотрите класс QDesktopWidget. Он унаследован от QWidget, поэтому буквально нет проблем с отображением снимков:
QPixmap pm(QDesktopWidget::screenGeometry().size());
QDesktopWidget::screen().render(&pm); // pm now contains screenshot
4.8
мне пришлось внести небольшие изменения в ваш фрагмент. В основном: создайте объект типа QDesktopWidget
для вызова screenGeometry()
и screen()
и смените screen().render()
на screen()->render()
, так как screen()
возвращает QWidget*
.
– Adri C.S.
22 April 2015 в 10:38
Также посмотрите на WindowFromPoint
и EnumChildWindows
. Последнее может позволить вам предлагать пользователю устранить неоднозначность, если у вас несколько окон с тем же названием.
Взгляните на Пример скриншота
Короче:
QScreen *screen = QGuiApplication::primaryScreen();
if (screen)
QPixmap originalPixmap = screen->grabWindow(0);
Для Qt, как вы делаете снимок экрана для определенного окна, нужно:
/*------ Take a screenshot of a window ------*/
// window is a: QWidget *window;
originalPixmap = QPixmap::grabWidget(window);