DrawingAreaウィジェット(Gtk.Buttonでテスト済み)で呼び出されたset_size_request(800,600)は、サイズが958 x 791 pxのウィンドウになるのに対して、Window上で呼び出されるset_default_size(800,600)は、ウィンドウのスクリーンショットを撮って解像度を見て)私は、ウィンドウのヘッダーバーのために、高さの少しの不一致があるかどうかを理解するだろうが、そのような幅と高さの違いは私には意味をなさない。ドキュメンテーションはそのようなことを何も示唆していません。誰かが私を啓発することができれば、それは素晴らしいだろう!ここでGtk.Widget.set_size_requestとGtk.Window.set_default_sizeは、同じ値を持つ異なるウィンドウサイズになるのはなぜですか?
はヴァラで書かれたコードの例です:
using Gtk;
using Cairo;
public class SizeTest : Gtk.Window {
public SizeTest() {
this.title = "Size test";
this.destroy.connect (Gtk.main_quit);
//set_default_size (800, 600); // Window size -> 800 x 600 px
var drawing_area = new DrawingArea();
drawing_area.set_size_request (800, 600); // Window size -> 958 x 791 px
add (drawing_area);
}
static int main (string[] args) {
Gtk.init (ref args);
var test = new SizeTest();
test.show_all();
Gtk.main();
return 0;
}
}
@Zongren張、それをテストしていただきありがとうございます。私はあなたのように2つのアプリケーションでそれを分割して、もう一度試しました。両方のウィンドウのサイズは私にとってはかなり異なっています。私は両方のモニターで同じことを試しました。
Btw、私は基本OS 0.4.1を使用しています。Loki、libgtk-3-0がインストールされています。バージョンは3.18.9です。
AFAIK Gtkはウィンドウの初期サイズについて約束していません。初期サイズやジオメトリヒントを設定しない場合、初期サイズは何でもかまいません。あなたのウィンドウマネージャーによって異なる可能性があります。 –
しかし、ほとんど私を混乱させるのは、800x600ピクセル(画面上の実際の物理ピクセルですよね?)は、DrawingAreaとは異なるウィンドウのようです。ウィンドウのデフォルトサイズとして設定されている場合、そのスクリーンショットはその解像度とまったく同じです。一方、DrawingAreaのサイズとして設定すると、799,599で描画された四角形が右下に表示され、0,0のオブジェクトは左上隅に表示されます。もちろん、DrawingAreaに対応するためにウィンドウサイズが調整されますが、ウィンドウは両方向で150ピクセル以上大きくなりました。 – Heiko
@Rawing私はそれを理解したと思う!あなたは正しいのですが、ウィンドウのデフォルトサイズを設定することは、それが実際にそのサイズで表示されることを保証するものではありません。ヒントありがとう!デフォルトのウィンドウサイズが異なると実際のサイズが違うのですが、それは私をだましています。これは決して適切なサイズではありません。スクリーンショットツールはさらに私をだました; D。 Gimpでスクリーンショットを開くと、ウィンドウの周りに透明なスペースがあることがわかりました。それはどうにかしてそのデフォルトサイズを取得し、ウィンドウのスクリーンショットを撮ってから、ウィンドウに割り当てられたスペースを作るが、それは透明では使われない。 – Heiko