QT设置Linux分辨率,如何使用QT,OpenGL,C和Linux更改屏幕分辨率?

您可以使用

xrrsetscreenconfigandrate,如

here所述:

#include

#include

#include

#include

#include

#include

Display *dpy;

Window root;

int num_sizes;

XRRScreenSize *xrrs;

XRRScreenConfiguration *conf;

short possible_frequencies[64][64];

short original_rate;

Rotation original_rotation;

SizeID original_size_id;

int main(int argc, char *argv[]){

//

// CONNECT TO X-SERVER, GET ROOT WINDOW ID

//

dpy = XOpenDisplay(NULL);

root = RootWindow(dpy, 0);

//

// GET POSSIBLE SCREEN RESOLUTIONS

//

xrrs = XRRSizes(dpy, 0, &num_sizes);

//

// LOOP THROUGH ALL POSSIBLE RESOLUTIONS,

// GETTING THE SELECTABLE DISPLAY FREQUENCIES

//

for(int i = 0; i < num_sizes; i ++) {

short *rates;

int num_rates;

printf("\n\t%2i : %4i x %4i (%4imm x%4imm ) ", i, xrrs[i].width, xrrs[i].height, xrrs[i].mwidth, xrrs[i].mheight);

rates = XRRRates(dpy, 0, i, &num_rates);

for(int j = 0; j < num_rates; j ++) {

possible_frequencies[i][j] = rates[j];

printf("%4i ", rates[j]); } }

printf("\n");

//

// GET CURRENT RESOLUTION AND FREQUENCY

//

conf = XRRGetScreenInfo(dpy, root);

original_rate = XRRConfigCurrentRate(conf);

original_size_id = XRRConfigCurrentConfiguration(conf, &original_rotation);

printf("\n\tCURRENT SIZE ID : %i\n", original_size_id);

printf("\tCURRENT ROTATION : %i \n", original_rotation);

printf("\tCURRENT RATE : %i Hz\n\n", original_rate);

//

// CHANGE RESOLUTION

//

printf("\tCHANGED TO %i x %i PIXELS, %i Hz\n\n", xrrs[1].width, xrrs[1].height, possible_frequencies[1][0]);

XRRSetScreenConfigAndRate(dpy, conf, root, 1, RR_Rotate_0, possible_frequencies[1][0], CurrentTime);

//

// SLEEP A WHILE

//

usleep(6000000);

//

// RESTORE ORIGINAL CONFIGURATION

//

printf("\tRESTORING %i x %i PIXELS, %i Hz\n\n", xrrs[original_size_id].width, xrrs[original_size_id].height, original_rate);

XRRSetScreenConfigAndRate(dpy, conf, root, original_size_id, original_rotation, original_rate, CurrentTime);

//

// EXIT

//

XCloseDisplay(dpy); }

//

// gcc -o Xrandr Xrandr.cc -lX11 -lXrandr -lstdc++

//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值